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しようとしたらエラーがでた。
ぐぐると、下記で解決したがいまいちよくわかっていない
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番目のオブジェクトを渡すとうまくいった。ということを覚えておく(理解はしていない