1. ホーム
  2. python

[解決済み】散布図カラーバー - Matplotlib

2022-02-11 06:04:40

質問

散布図にカラーバーを表示させたいのですが、エラーが出ます。

TypeErrorです。mappable には、最初に 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) 正しくプロットされましたが、カラーバーもプロットしたいのですが。

よろしくお願いします。

どのように解決するのですか?

特定の 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])

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

そうすると、普通にカラーマップを構築できるようになります。 具体的なエラーは、色が set_array (データ値の配列をRGBにマッピングする処理を行う)。