3番目の変数に従ってポイントがシェーディングされる散布図(matplotlibを使用)を作成します。私はこれに非常に近いです:
plt.scatter(w, M, c=p, marker='s')
ここで、wとMはデータポイントで、pはシェーディングする変数です。
しかし、色ではなくグレースケールでやりたい。誰でも助けることができますか?
手動で色を設定する必要はありません。代わりに、グレースケールカラーマップを指定してください...
import numpy as np
import matplotlib.pyplot as plt
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()
plt.show()
または、 より広い範囲のカラーマップ を希望する場合は、cmap
kwargをscatter
に指定することもできます。これらのいずれかの逆バージョンを使用するには、それらのいずれかの「_r
」バージョンを指定するだけです。例えば。 gray
の代わりにgray_r
。事前に作成されたいくつかの異なるグレースケールカラーマップがあります(例:gray
、Gist_yarg
、binary
など)。
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()
Matplotlibでは、灰色は0〜1の数値の文字列として指定できます。
たとえばc = '0.1'
次に、この範囲内の値で3番目の変数を変換し、それを使用してポイントを色付けできます。
次の例では、色を決定する値としてポイントのy位置を使用しました。
from matplotlib import pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]
color = [str(item/255.) for item in y]
plt.scatter(x, y, s=500, c=color)
plt.show()
X値の場合に正確に基づいて色をプロットする必要がある場合があります。たとえば、3種類の変数といくつかのデータポイントを持つデータフレームがあるとします。そして、あなたは次のことをしたい、
この場合、x値を対応する色名にリストとしてマップし、そのリストをplt.scatter
コマンドに渡すために、short関数に書き込む必要があります。
x=['A','B','B','C','A','B']
y=[15,30,25,18,22,13]
# Function to map the colors as a list from the input list of x variables
def pltcolor(lst):
cols=[]
for l in lst:
if l=='A':
cols.append('red')
Elif l=='B':
cols.append('blue')
else:
cols.append('green')
return cols
# Create the colors list using the function above
cols=pltcolor(x)
plt.scatter(x=x,y=y,s=500,c=cols) #Pass on the list created by the function here
plt.grid(True)
plt.show()