回答:
色を手動で設定する必要はありません。代わりに、グレースケールカラーマップを指定します...
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_r
代わりにgray
。いくつかの異なるグレースケールカラーマッププリ製(例えばあり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()
mpl.cm
として直接入手することもできますplt.cm
。
plt.contour()
orまたはplt.contourf()
- を使用してプロットする必要がありますが、これは別の質問です
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()
c
4番目の列にアルファ値を指定して引数として指定すると、ALPHAをカラーマップとして適用できます。3番目の変数は、Zは、ある場合にshape=(n,1)
は、 colors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
(それが微調整することができ、もちろん)非常に良い効果を与えます。
plt.colorbar()
がそれを行います
場合によっては、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()