2014-06-19 36 views
9

Chciałbym wiedzieć, jak mieć odpowiednie osie na powierzchni 3D w MayaVi. Najlepsze osie mógłbym stworzyć coś wyglądało jak this ...Jak narysować odpowiednie osie 3D w MayaVi, jak te w Matplotlib

enter image description here

Jednak te nie wyglądają bardzo profesjonalnie, gdybym do prezentacji lub umieścić je na plakacie.

Chciałbym osie aby wyglądać this ...

enter image description here

Osie te wyglądają o wiele bardziej profesjonalne i są łatwiejsze do odczytania niż domyślny MayaVi osi.

Każda pomoc zostanie bardzo doceniona.

Dzięki!

+0

Którą wersję MayaVi używasz? – Schorsch

+0

Twoje pytanie brzmi po prostu "Nie podoba mi się domyślne topory mayavi, jak mam je ulepszyć?" Moim zdaniem tak naprawdę nie jest to dobre pytanie, chociaż może to być ważna cecha. Odpowiedź na pytanie brzmi: tak wyglądają osie w VTK. Jeśli nie jesteś z nich zadowolony, masz kilka opcji. Możesz rozejrzeć się za różnymi bibliotekami, które robią, co chcesz, możesz spróbować poprosić programistów mayavi/vtk ładnie, jeśli będą implementować twoją funkcję, lub możesz napisać to sam. – aestrivex

+0

Wpadłem na ten sam problem. Chociaż zgadzam się, że "tak właśnie wygląda VTK", nie jest to satysfakcjonująca odpowiedź. Moim zdaniem ten problem sprawia, że ​​mayavi jest prawie bezużyteczny dla zastosowań naukowych, ponieważ nigdy nie można opublikować tak dziwacznie wyglądających działek. Szuka alternatywy ... R wydaje się obiecująca – HansSnah

Odpowiedz

3

Miałem również ten problem. I hacked złe obejście przez nie wyświetla osie mayavi, ale wykreślanie osi Musiałem się używając 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) 

Teraz można dodać etykiety i adnotacji przy użyciu text3d() siły Bardzo nieeleganckiego i brutalnej, ale działa w szczyptę.