аннотирование многих точек текста в майави с использованием mlab

Я пытаюсь аннотировать точки, построенные с помощью функции points3d (), используя mayavi.mlab. Каждая точка связана с меткой, которую я хотел бы построить рядом с точками, используя функцию 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), я не смог найти ничего в документах.

Благодаря,

Патрик

One Solution collect form web for “аннотирование многих точек текста в майави с использованием mlab”

То, как вы делаете это выше, будет отображать сцену каждый раз, когда вы создадите точку или текст. Это медленно. Вы можете отключить рендеринг сцены, выполнить печать, а затем визуализировать сцену по фигуре.scene.disable_render = True / False :

  import scipy from mayavi import mlab X = 100 * scipy.rand(100, 3) figure = mlab.figure('myfig') figure.scene.disable_render = True # Super duper trick mlab.points3d(X[:,0], X[:,1], X[:,2], scale_factor=0.4) for i, x in enumerate(X): mlab.text3d(x[0], x[1], x[2], str(i), scale=(2, 2, 2)) figure.scene.disable_render = False # Super duper trick 

Я использую этот трюк и другие в классе Figure в морфическом средстве просмотра https://github.com/duanemalcolm/morphic/blob/master/morphic/viewer.py

Еще один хороший трюк в коде – повторное использование существующих объектов, т. Е. Если вы уже начертили текст, не переставляйте их, просто обновляйте их позиции и текстовые атрибуты. Это означает сохранение объекта mlab. Вы можете видеть, как я это делаю в morphic.Viewer.

  • Как масштабировать оси x и y в mayavi2?
  • Сценарий Python не продолжается до закрытия окна сцены Mayavi
  • Анимация сюжета mayavi points3d
  • установка Mayavi с помощью pip - нет модуля с именем vtk
  • Ограничьте мышь Маяви на вращающуюся Землю вокруг своей оси
  • Функция построения трех измерений по заданной области с помощью matplotlib
  • Использование TraitsUI в Mayavi для создания графического интерфейса, моделирования магнитного поля
  • Mayavi: интерполировать цвета лица в triangular_mesh
  • Python - лучший язык программирования в мире.