аннотирование многих точек текста в майави с использованием 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.

  • Построение 3D-графики в Python 3
  • Использование TraitsUI в Mayavi для создания графического интерфейса, моделирования магнитного поля
  • Импорт майави из python создает всплывающее окно с черным фоном в пользовательском интерфейсе (Mavericks / Canopy)
  • Работает ли свойство текста шрифта Mayavi «Размер шрифта»?
  • Можно ли напрямую применить матрицу аффинного преобразования к объекту Mayavi ImageActor?
  • 3D-график контура из данных с помощью Mayavi / Python
  • Простая стрелка mayavi / tvtk в mlab странное поведение (выглядит как ошибка)
  • Сохранение нескольких изображений в MayaVi
  • Как масштабировать оси x и y в mayavi2?
  • Ограничьте мышь Маяви на вращающуюся Землю вокруг своей оси
  • Плохая автоматическая триангуляция с Mayavi для окраски поверхности, известной только ее углом
  • Python - лучший язык программирования в мире.