ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

RuntimeError: No mappable was found to use for colorbar creation. First define a mappable such as an image (with imshow) or a contour set (with contourf).

スポンサードリンク

RuntimeError: No mappable was found to use for colorbar creation. First define a mappable such as an image (with imshow) or a contour set (with contourf).

X_reduced = TSNE(n_components=2, random_state=0).fit_transform(X)
_, ax = plt.subplots(figsize=(12, 9))
ax.scatter(X_reduced[:, 0], X_reduced[:, 1], c=data['label'])
plt.colorbar()

t-sneで次元削減したデータをscatterでplotしようとしたらエラーがでた。

ぐぐると、下記で解決したがいまいちよくわかっていない

stackoverflow.com

X_reduced = TSNE(n_components=2, random_state=0).fit_transform(X)
_, ax = plt.subplots(figsize=(12, 9))
ax.scatter(X_reduced[:, 0], X_reduced[:, 1], c=data['label'])
pcm = ax.get_children()[0]
plt.colorbar(pcm, ax=ax)
ax.get_children()
[<matplotlib.collections.PathCollection at 0x7f41e2b26fd0>,
 <matplotlib.spines.Spine at 0x7f41e25c4cf8>,
 <matplotlib.spines.Spine at 0x7f41e25c4ba8>,
 <matplotlib.spines.Spine at 0x7f41e25c49b0>,
 <matplotlib.spines.Spine at 0x7f41e25c4940>,
 <matplotlib.axis.XAxis at 0x7f41e25c44a8>,
 <matplotlib.axis.YAxis at 0x7f41e261f160>,
 Text(0.5,1,''),
 Text(0,1,''),
 Text(1,1,''),
 <matplotlib.patches.Rectangle at 0x7f41e28d3470>]

ax.get_children()をみてみると、こんな感じ↑でオブジェクトがあるので、0番目のオブジェクトを渡すとうまくいった。ということを覚えておく(理解はしていない