web-dev-qa-db-ja.com

Matplotlib散布図; 3番目の変数の関数としての色

3番目の変数に従ってポイントがシェーディングされる散布図(matplotlibを使用)を作成します。私はこれに非常に近いです:

plt.scatter(w, M, c=p, marker='s')

ここで、wとMはデータポイントで、pはシェーディングする変数です。
しかし、色ではなくグレースケールでやりたい。誰でも助けることができますか?

134
Thomas Collett

手動で色を設定する必要はありません。代わりに、グレースケールカラーマップを指定してください...

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()

enter image description here

または、 より広い範囲のカラーマップ を希望する場合は、cmap kwargをscatterに指定することもできます。これらのいずれかの逆バージョンを使用するには、それらのいずれかの「_r」バージョンを指定するだけです。例えば。 grayの代わりにgray_r。事前に作成されたいくつかの異なるグレースケールカラーマップがあります(例:grayGist_yargbinaryなど)。

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()
136
Joe Kington

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()

enter image description here

24
joaquin

X値の場合に正確に基づいて色をプロットする必要がある場合があります。たとえば、3種類の変数といくつかのデータポイントを持つデータフレームがあるとします。そして、あなたは次のことをしたい、

  • 赤の物理変数「A」に対応するポイントをプロットします。
  • 青の物理変数「B」に対応するプロットポイント。
  • GREENの物理変数「C」に対応するポイントをプロットします。

この場合、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()

Coloring scatter plot as a function of x variable

5
Tirtha