mayavi.mlab を使用して points3d() 関数でプロットされたポイントに注釈を付けようとしています。各ポイントは、text3d() 関数を使用してポイントの横にプロットしたいラベルに関連付けられています。ポイントのプロットは高速ですが、mlab.text3d() 関数は座標の配列を受け入れないようです。そのため、ポイントをループしてテキストを個別にプロットする必要があり、非常に時間がかかります。
for i in xrange(0, self.n_labels):
self.mlab_data.append(
mlab.points3d( pX[self.labels == self.u_labels[i], 0],
pX[self.labels == self.u_labels[i], 1],
pX[self.labels == self.u_labels[i], 2],
color=self.colours[i],
opacity=1,
scale_mode="none",
scale_factor=sf ) )
idcs, = np.where(self.labels == self.u_labels[i])
for n in idcs.flatten():
mlab.text3d( pX[n, 0],
pX[n, 1],
pX[n, 2],
"%d" % self.u_labels[i],
color=self.colours[i],
opacity=1,
scale=sf )
これをスピードアップする方法はありますか?また、凡例を追加することは可能ですか (たとえば、matplotlib のように)、ドキュメントには何も見つかりませんでした。
ありがとう、
パトリック