TECH I.S.

Matplotlib散布図


散布図の作成

Pyplotでは、scatter()関数を使用して散布図を描画できます。

scatter()関数は、観測ごとに1つのドットをプロットします。同じ長さの2つの配列が必要です。1つはX軸の値用、もう1つは Y 軸の値用です。

簡単な散布図:

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y) plt.show()

結果:


上記の例の観測結果は、13台の車が通過した結果です。

X軸は車の使用年数を示します。

Y軸は、車が通過するときの速度を示します。

観測間に何らかの関係はありますか?

車が新しいほど速く走るようですが、それは偶然かもしれません、結局のところ、登録した車は13台だけでした。


プロットの比較

上の例では、速度と年齢の間に関係があるように見えますが、別の日の観測結果もプロットしてみるとどうなるでしょうか?散布図から何か他のことがわかるでしょうか?

同じ図に2つのプロットを描画します。

import matplotlib.pyplot as plt import numpy as np # 初日、13台の車の年齢と速度: x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y) # 2日目、15台の車の年齢と速度: x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12]) y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85]) plt.scatter(x, y) plt.show()

結果:


注意:上の例では、速度と年齢の間に関係があるように見えますが、別の日の観測結果もプロットしてみるとどうなるでしょうか?散布図から何か他のことがわかるでしょうか?

2つのプロットを比較すると、どちらも同じ結論を出していると言っても過言ではありません。新しい車ほど速く走るということです。


color

colorまたはc引数を使用して、各散布図に独自の色を設定できます。

マーカーの独自の色を設定します。

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) plt.scatter(x, y, color = 'hotpink') x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12]) y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85]) plt.scatter(x, y, color = '#88c999') plt.show()

結果:


各ドットに色を付ける

c引数の値として色の配列を使用して、各ドットに特定の色を設定することもできます。

注意:これにはcolor引数は使用できません。c引数のみを使用します。

マーカーの独自の色を設定します。

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"]) plt.scatter(x, y, c=colors) plt.show()

結果:


カラーマップ

Matplotlibモジュールには、使用可能なカラーマップが多数あります。

カラーマップは色のリストのようなもので、各色は0から100の範囲の値を持ちます。

カラーマップの例を次に示します。

このカラーマップは「viridis」と呼ばれ、ご覧のとおり、0(紫色)から100(黄色)までの範囲です。

カラーマップの使い方

カラーマップは、キーワード引数cmapとカラーマップの値(この場合はMatplotlibで使用可能な組み込みカラーマップの1つである 'viridis')で指定できます。

さらに、散布図の各点に1つの値(0から100)を含む配列を作成する必要があります。

カラー配列を作成し、散布図でカラーマップを指定します。

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100]) plt.scatter(x, y, c=colors, cmap='viridis') plt.show()

結果:

plt.colorbar()ステートメントを含めることにより、図面にカラーマップを含めることができます。

実際のカラーマップを含める:

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100]) plt.scatter(x, y, c=colors, cmap='viridis') plt.colorbar() plt.show()

結果:

利用可能なカラーマップ

組み込みのカラーマップのいずれかを選択できます。



名前
Accent それを試してみてください » Accent_r それを試してみてください »
Blues それを試してみてください » Blues_r それを試してみてください »
BrBG それを試してみてください » BrBG_r それを試してみてください »
BuGn それを試してみてください » BuGn_r それを試してみてください »
BuPu それを試してみてください » BuPu_r それを試してみてください »
CMRmap それを試してみてください » CMRmap_r それを試してみてください »
Dark2 それを試してみてください » Dark2_r それを試してみてください »
GnBu それを試してみてください » GnPo_r それを試してみてください »
Greens それを試してみてください » Greens_r それを試してみてください »
Greys それを試してみてください » Greys_r それを試してみてください »
OrRd それを試してみてください » OrRd_r それを試してみてください »
Oranges それを試してみてください » Oranges_r それを試してみてください »
PRGn それを試してみてください » PRGn_r それを試してみてください »
Paired それを試してみてください » Paired_r それを試してみてください »
Pastel1 それを試してみてください » Pastel1_r それを試してみてください »
Pastel2 それを試してみてください » Pastel2_r それを試してみてください »
PiYG それを試してみてください » PiYG_r それを試してみてください »
PuBu それを試してみてください » PuBu_r それを試してみてください »
PuBuGn それを試してみてください » PuBuGn_r それを試してみてください »
PuOr それを試してみてください » PuOr_r それを試してみてください »
PuRd それを試してみてください » PuRd_r それを試してみてください »
Purples それを試してみてください » Purples_r それを試してみてください »
RdBu それを試してみてください » RdBu_r それを試してみてください »
RdGy それを試してみてください » RdGy_r それを試してみてください »
RdPu それを試してみてください » RdPu_r それを試してみてください »
RdYlBu それを試してみてください » RdYlBu_r それを試してみてください »
RdYlGn それを試してみてください » RdYlGn_r それを試してみてください »
Reds それを試してみてください » Reds_r それを試してみてください »
Set1 それを試してみてください » Set1_r それを試してみてください »
Set2 それを試してみてください » Set2_r それを試してみてください »
Set3 それを試してみてください » Set3_r それを試してみてください »
Spectral それを試してみてください » Spectral_r それを試してみてください »
Wistia それを試してみてください » Wistia_r それを試してみてください »
YlGn それを試してみてください » YlGn_r それを試してみてください »
YlGnBu それを試してみてください » YlGnPo_r それを試してみてください »
YlOrBr それを試してみてください » YlOrBr_r それを試してみてください »
YlOrRd それを試してみてください » YlOrRd_r それを試してみてください »
afmhot それを試してみてください » afmhot_r それを試してみてください »
autumn それを試してみてください » autumn_r それを試してみてください »
binary それを試してみてください » binary_r それを試してみてください »
bone それを試してみてください » bone_r それを試してみてください »
brg それを試してみてください » brg_r それを試してみてください »
bwr それを試してみてください » bwr_r それを試してみてください »
cividis それを試してみてください » cividis_r それを試してみてください »
cool それを試してみてください » cool_r それを試してみてください »
coolwarm それを試してみてください » coolwarm_r それを試してみてください »
copper それを試してみてください » copper_r それを試してみてください »
cubehelix それを試してみてください » cubehelix_r それを試してみてください »
flag それを試してみてください » flag_r それを試してみてください »
gist_earth それを試してみてください » gist_earth_r それを試してみてください »
gist_gray それを試してみてください » gist_gray_r それを試してみてください »
gist_heat それを試してみてください » gist_heat_r それを試してみてください »
gist_ncar それを試してみてください » gist_ncar_r それを試してみてください »
gist_rainbow それを試してみてください » gist_rainbow_r それを試してみてください »
gist_stern それを試してみてください » gist_stern_r それを試してみてください »
gist_yarg それを試してみてください » gist_yarg_r それを試してみてください »
gnuplot それを試してみてください » gnuplot_r それを試してみてください »
gnuplot2 それを試してみてください » gnuplot2_r それを試してみてください »
gray それを試してみてください » gray_r それを試してみてください »
hot それを試してみてください » hot_r それを試してみてください »
hsv それを試してみてください » hsv_r それを試してみてください »
inferno それを試してみてください » inferno_r それを試してみてください »
jet それを試してみてください » jet_r それを試してみてください »
magma それを試してみてください » magma_r それを試してみてください »
nipy_spectral それを試してみてください » nipy_spectral_r それを試してみてください »
ocean それを試してみてください » ocean_r それを試してみてください »
pink それを試してみてください » pink_r それを試してみてください »
plasma それを試してみてください » plasma_r それを試してみてください »
prism それを試してみてください » prism_r それを試してみてください »
rainbow それを試してみてください » rainbow_r それを試してみてください »
seismic それを試してみてください » seismic_r それを試してみてください »
spring それを試してみてください » spring_r それを試してみてください »
summer それを試してみてください » summer_r それを試してみてください »
tab10 それを試してみてください » tab10_r それを試してみてください »
tab20 それを試してみてください » tab20_r それを試してみてください »
tab20b それを試してみてください » tab20b_r それを試してみてください »
tab20c それを試してみてください » tab20c_r それを試してみてください »
terrain それを試してみてください » terrain_r それを試してみてください »
twilight それを試してみてください » twilight_r それを試してみてください »
twilight_shifted それを試してみてください » twilight_shifted_r それを試してみてください »
viridis それを試してみてください » viridis_r それを試してみてください »
winter それを試してみてください » winter_r それを試してみてください »


サイズ

引数sを使用してドットのサイズを変更できます。

色と同様に、サイズの配列がx軸およびy軸の配列と同じ長さであることを確認してください。

マーカーの独自のサイズを設定します。

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75]) plt.scatter(x, y, s=sizes) plt.show()

結果:


アルファ

引数alphaを使用してドットの透明度を調整できます。

色と同様に、サイズの配列がx軸とy軸の配列と同じ長さであることを確認してください。

マーカーの独自のサイズを設定します。

import matplotlib.pyplot as plt import numpy as np x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6]) y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86]) sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75]) plt.scatter(x, y, s=sizes, alpha=0.5) plt.show()

結果:


カラー サイズとアルファを組み合わせる

カラーマップとさまざまなサイズのドットを組み合わせることができます。これは、ドットが透明な場合に最もよく視覚化されます。

x点、y点、色、サイズの値が100のランダムな配列を作成します。

import matplotlib.pyplot as plt import numpy as np x = np.random.randint(100, size=(100)) y = np.random.randint(100, size=(100)) colors = np.random.randint(100, size=(100)) sizes = 10 * np.random.randint(100, size=(100)) plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral') plt.colorbar() plt.show()

結果:



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細