Как построить правильные 3D-оси в MayaVi, например, в Matplotlib

Я хотел бы знать, как иметь правильные оси на трехмерном поверхностном графике в MayaVi. Лучшие топоры, которые я мог создать, выглядели примерно так: this ...

введите описание изображения здесь

Однако это не выглядело бы очень профессионально, если бы я проводил презентацию или помещал их на плакат.

Я бы хотел, чтобы топоры выглядели примерно так: это ...

введите описание изображения здесь

Эти оси выглядят намного более профессионально и их легче читать, чем оси MayaVi по умолчанию.

Любая помощь будет принята с благодарностью.

Спасибо!


person Ben Donovan    schedule 19.06.2014    source источник
comment
Какую версию MayaVi вы используете?   -  person Schorsch    schedule 20.06.2014
comment
Ваш вопрос в основном заключается в том, что мне не нравятся оси Mayavi по умолчанию, как мне улучшить их? На мой взгляд, это не совсем хороший вопрос, хотя это может быть важный запрос функции. Ответ на ваш вопрос - так оси выглядят в ВТК. Если они вам не нравятся, у вас есть несколько вариантов. Вы можете поискать разные библиотеки, которые делают то, что вы хотите, вы можете попытаться вежливо спросить разработчиков mayavi / vtk, будут ли они реализовывать вашу функцию, или вы можете написать ее самостоятельно.   -  person aestrivex    schedule 20.06.2014
comment
Просто столкнулся с той же проблемой. Хотя я согласен с тем, что VTK выглядит именно так, это не удовлетворительный ответ. На мой взгляд, эта проблема делает Mayavi практически бесполезным для научных приложений, поскольку вы никогда не сможете публиковать такие странно выглядящие сюжеты. Собираемся искать альтернативы ... R кажется многообещающим   -  person HansSnah    schedule 03.10.2016


Ответы (1)


У меня тоже была эта пробема. Я взломал плохой обходной путь, не отображая оси Mayavi, но построив оси, которые мне были нужны, используя plot3d ()

from mayavi import mlab
import numpy as np
xx = yy = zz = np.arange(-0.6,0.7,0.1)
xy = xz = yx = yz = zx = zy = np.zeros_like(xx)    
mlab.plot3d(yx,yy+lensoffset,yz,line_width=0.01,tube_radius=0.01)
mlab.plot3d(zx,zy+lensoffset,zz,line_width=0.01,tube_radius=0.01)
mlab.plot3d(xx,xy+lensoffset,xz,line_width=0.01,tube_radius=0.01)

Теперь вы можете добавлять метки и аннотации, используя text3d (). Очень неэлегантно и грубо, но работает в крайнем случае.

person Etherealwings    schedule 21.06.2014
comment
Думаю, это нормально. просто сохраните его как функцию, готовую к вызову. не такая уж и большая грубая сила ...;) - person K.-Michael Aye; 07.03.2020