Python Matplotlibでカスタムカラーとカットーム領域サイズを使用して4D散布図をプロットする方法は?
はじめに..
散布図は、2つの変数間に関係があるかどうかを確認するために、2次元でデータを表す場合に非常に役立ちます。散布図は、データがX値とY値のドットとして表されるグラフです。
その方法..
1.次のコマンドでmatplotlibをインストールします。
pip install matplotlib
2.matplotlibをインポートします
import matplotlib.pyplot as plt tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Sampras', 14),('Emerson', 12),('laver', 11),('Murray', 3),('Wawrinka', 3),('Zverev', 0),('Theim', 1),('Medvedev',0),('Tsitsipas', 0),('Dimitrov', 0),('Rublev', 0))
3.次のステップは、任意の配列形式でデータを準備することです。データベースまたはスプレッドシートからデータを読み取り、以下の形式でデータをフォーマットすることもできます。
titles = [title for player, title in tennis_stats] players = [player for player, title in tennis_stats]
4. .scatterのパラメーターは、matplotlibの他のメソッドと同様に、X値とY値の配列を必要とします。
*注 -* X値とY値は両方とも同じサイズである必要があり、データはデフォルトでフロートに変換されます。
plt.scatter(titles, players)
<matplotlib.collections.PathCollection at 0x28df3684ac0>
5.ああ、x軸にプロットされた私のGrandSlamタイトルはフロートです。それらを整数に変換し、以下の関数でx軸とy軸のタイトルも追加します。軸フォーマッタは.set_major_formatterで上書きされます。
from matplotlib.ticker import FuncFormatter def format_titles(title, pos): return '{}'.format(int(title)) plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles)) plt.xlabel('Grandslam Titles') plt.ylabel('Tennis Player') plt.scatter(titles, players)
6.散布図を単なる2Dチャートとは考えないでください。散布図は、3次元(面積)、さらには4次元(色)を追加することもできます。以下で私が何をするかについて少し説明させてください。
まず、選択した色を定義してから、ランダムに色を選択してツアー値を割り当てます。
アルファ値により、各ポイントが半透明になり、オーバーラップする場所を確認できます。この値が高いほど、ポイントの透明度は低くなります。
import random # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values color = [random.choice(random_colors) for _ in range(len(titles))] plt.scatter(titles, players, c=color, alpha=0.5)
<matplotlib.collections.PathCollection at 0x28df2242d00>
7.では、表現のサイズ/領域を少し大きくしましょう。
import random # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values color = [random.choice(random_colors) for _ in range(len(titles))] # set the size size = [(50 * random.random()) ** 2 for _ in range(len(titles))] plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles)) plt.xlabel('Grandslam Titles') plt.ylabel('Tennis Player') plt.scatter(titles, players, c=color, s=size, alpha=0.1)
<matplotlib.collections.PathCollection at 0x28df22e2430>
グラフの最終的な目標は、データを理解しやすくすることです。
散布図でできることの基本を示しました。たとえば、色をサイズに依存させて、同じサイズのすべてのポイントを同じ色にすることで、データを区別するのに役立つ可能性があります。
詳細-https://matplotlib.org/。
最後に、すべてをまとめます。
例
# imports import matplotlib.pyplot as plt import random # preparing data.. tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Sampras', 14),('Emerson', 12),('laver', 11),('Murray', 3),('Wawrinka', 3),('Zverev', 0),('Theim', 1),('Medvedev',0),('Tsitsipas', 0),('Dimitrov', 0),('Rublev', 0)) titles = [title for player, title in tennis_stats] players = [player for player, title in tennis_stats] # custom function from matplotlib.ticker import FuncFormatter def format_titles(title, pos): return '{}'.format(int(title)) # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values color = [random.choice(random_colors) for _ in range(len(titles))] # set the size size = [(50 * random.random()) ** 2 for _ in range(len(titles))] plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles)) plt.xlabel('Grandslam Titles') plt.ylabel('Tennis Player') plt.scatter(titles, players, c=color, s=size, alpha=0.1)
<matplotlib.collections.PathCollection at 0x2aa7676b670>
-
Matplotlibを使用してPythonで3D密度マップをプロットする方法は?
matplotlibを使用してPythonで3D密度マップをプロットするには、次の手順を実行できます- numpyを使用してside、x、y、zを作成します。 Numpy linspace 3番目の数値に基づいて2つのポイント間にデータを作成するのに役立ちます。 サイドデータを使用して、座標ベクトルから座標行列を返します。 xとyを使用して指数データを作成します(ステップ2)。 pcolormesh()を使用して、不規則な長方形グリッドで疑似カラープロットを作成します メソッド。 図を表示するには、 show()を使用します メソッド。 例 from m
-
Python Matplotlibでカスタムカラーとカットーム領域サイズを使用して4D散布図をプロットする方法は?
はじめに.. 散布図は、2つの変数間に関係があるかどうかを確認するために、2次元でデータを表す場合に非常に役立ちます。散布図は、データがX値とY値のドットとして表されるグラフです。 その方法.. 1.次のコマンドでmatplotlibをインストールします。 pip install matplotlib 2.matplotlibをインポートします import matplotlib.pyplot as plt tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),(