我正在尝试使用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中),我在文档中找不到任何信息。
谢谢, Patrick