Próbuję opisać punkty narysowane za pomocą funkcji points3d() za pomocą mayavi.mlab. Każdy punkt jest powiązany z etykietą, którą chciałbym wydrukować obok punktów za pomocą funkcji text3d(). Kreślenia punktów jest szybka, jednak funkcja mlab.text3d() nie wydaje się akceptować tablice współrzędnych, więc mam do pętli na punkty i wykreślić tekst indywidualnie, co jest bardzo powolny:dodawanie adnotacji do wielu punktów z tekstem w mayavi przy użyciu 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)
Wszelkie pomysły, jak mogę to przyspieszyć? Ponadto, czy możliwe jest dodanie legendy (jak na przykład w matplotlib), nie mogłem znaleźć niczego w dokumentach.
Dzięki,
Patrick