web-dev-qa-db-ja.com

散布図のカラーバー-Matplotlib

散布図のカラーバーを表示しようとしていますが、エラーが発生し続けます。

TypeError:最初にマップ可能にset_arrayする必要があります

これは私がプロットするためにやっていることです:

_# Just plotting the values of data that are nonzero 
x_data = numpy.nonzero(data)[0] # x coordinates
y_data = numpy.nonzero(data)[1] # y coordinates

# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])

pts = plt.scatter(x_data, y_data, marker='s', color=data)

plt.colorbar(pts)
_

plt.colorbar(pts)にコメントすると、プロットは正しく取得されましたが、カラーバーもプロットしたいと思います。

前もって感謝します。

20
pceccon

特定のRGB値を渡しているため、元のデータとの関係がわからないため、matplotlibはカラーマップを作成できません。

値をRGBカラーにマッピングする代わりに、scatterが処理します。

の代わりに:

# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])

pts = plt.scatter(x_data, y_data, marker='s', color=data)

行う:

pts = plt.scatter(x_data, y_data, marker='s', c=data[x_data, y_data])

plt.cm.jetに元々渡していたものをcに渡すだけです。)

その後、通常どおりカラーマップを作成できます。特定のエラーは、色がset_array(データ値の配列のRGBへのマッピングを処理する)を介して設定されるのではなく、手動で設定されていることを示しています。

14
Joe Kington