Sto provando ad annotare i punti tracciati con la funzione points3d() usando mayavi.mlab. Ogni punto è associato a un'etichetta che vorrei tracciare vicino ai punti usando la funzione text3d(). Tracciare i punti è veloce, tuttavia la funzione mlab.text3d() non sembrano accettare array di coordinate, quindi devo ciclo sopra i punti e tracciare il testo individuale, che è molto lento:annotando molti punti con testo in mayavi usando mlab
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)
Qualsiasi idee su come potrei accelerare? Inoltre, è possibile aggiungere una legenda (come ad esempio in matplotlib), non ho trovato nulla nei documenti.
Grazie,
Patrick