аннотирование многих точек текста в майави с использованием 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), я не смог найти ничего в документах.
- Работает ли свойство текста шрифта Mayavi «Размер шрифта»?
- Добавление 4-й переменной в 3D-график в Python
- Измените источники данных mlab quiver3d & surf без очистки фигуры в скриптах признаков
- Как напрямую установить цвета RGB / RGBA в майави
- Mayavi: интерполировать цвета лица в triangular_mesh
Благодаря,
Патрик
- Mayavi не работает из Spyder: жалуется на «ValueError: API QString» ... »
- Функция построения трех измерений по заданной области с помощью matplotlib
- ValueError: невозможно установить набор инструментов для wx, поскольку он уже установлен на qt4
- Импорт майави из python создает всплывающее окно с черным фоном в пользовательском интерфейсе (Mavericks / Canopy)
- Простая стрелка mayavi / tvtk в mlab странное поведение (выглядит как ошибка)
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.
- Mayavi Mlab: рисование октаэдров
- Использование TraitsUI в Mayavi для создания графического интерфейса, моделирования магнитного поля
- Ошибка TVTK в Mayavi (Python)
- Ограничьте мышь Маяви на вращающуюся Землю вокруг своей оси
- Как масштабировать оси x и y в mayavi2?
- python: построение каркаса 3D-кубоида
- Укажите абсолютный цвет для 3D-точек в MayaVi
- Как подключиться / подключить / сгруппировать несколько объектов в Mayavi2
- майави в питоне Анаконда
- Сценарий Python не продолжается до закрытия окна сцены Mayavi
- Неявное уравнение и майяви
- mayavi mlab.savefig () дает пустое изображение