これは少しクレイジーかもしれませんが、matplotlib v1.1.0 を使用して 3D 散布図のクリック可能なイメージ マップを作成しようとしています。私は 2 次元プロット (このブログを参照) でそれを行う方法を読みましたが、3 次元は私を当惑させました。基本的な問題は、3D 軸の表示座標を取得する方法がわからないことです。
2 番目のケースでは、クリック ポイントを散布ポイント上に正しく配置するには、各散布ポイントをデータ単位から表示単位に変換する必要があります。ax.transDataを使用すると、かなり簡単に思えます。これが 3d 軸でも機能することを期待していましたが、そうではないようです。たとえば、これが私がやろうとしたことです:
# create the plot
from mpl_toolkits.mplot3d import Axes3D
fig = pylab.figure()
ax = fig.add_subplot(111, projection = '3d')
x = y = z = [1, 2, 3]
sc = ax.scatter(x,y,z)
# now try to get the display coordinates of the first point
sc.axes.transData.transform((1,1,1))
ただし、最後の行で「無効な頂点配列」エラーが発生します。(1,1) のような 2 点のタプルを渡した場合にのみ機能しますが、3D プロットでは意味がありません。3D 投影を 2D 表示座標に変換する方法がどこかにあるはずですが、インターネットを数時間壊した後、それが見つかりません。これを正しく行う方法を知っている人はいますか?