我正在尝试使用 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 中),我在文档中找不到任何内容。
谢谢,
帕特里克