Mayavi: Как я могу перевернуть ось Z сцены? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь перевернуть ось Z на трехмерном графике майави. Я понял, как вращать камеру и т. Д., Но это не то, что я хочу. Я просто хочу изменить направление оси Z. Без манипулирования самими данными

#Minimum working example

import numpy as np
from mayavi import mlab

x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j] #Generate XYZ
data = np.arange(x.shape[0])
x = x.ravel()
y = y.ravel()
z = z.ravel()
mlab.points3d(x, y, z, data) #Produce volumetric plot
mlab.axes(xlabel='X', ylabel='Y', zlabel='Z') #Display axis
mlab.orientation_axes()
mlab.show()

1 Ответ

0 голосов
/ 29 августа 2018

Не могли бы вы объяснить, что вы имеете в виду, используя несимметричные данные, используя этот пример. Вы хотите, чтобы отрицательный z был на верхней стороне? И почему вращение камеры не дает желаемого результата?

Вы можете добавить код из редактора макросов (объяснено ниже).

import numpy as np
from mayavi import mlab

x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j] #Generate XYZ
data = np.arange(x.shape[0])
x = x.ravel()
y = y.ravel()
z = z.ravel()

# Recorded script from Mayavi2
from numpy import array
try:
    engine = mayavi.engine
except (AttributeError, NameError):
    from mayavi.api import Engine
    engine = Engine()
    engine.start()
if len(engine.scenes) == 0:
    engine.new_scene()
# -------------------------------------------
scene = engine.scenes[0]
scene.scene.camera.position = [20.68813263960946, 20.334388554161922, 20.518300376103046]
scene.scene.camera.focal_point = [0.24373197555541992, 0.24373197555541992, 0.25]
scene.scene.camera.view_angle = 30.0
scene.scene.camera.view_up = [-0.41179533881878827, -0.4046701524210215, 0.81649658092772626]
scene.scene.camera.clipping_range = [15.729834995160559, 58.864284541884331]
scene.scene.camera.compute_view_plane_normal()
scene.scene.render()

mlab.points3d(x, y, z, data) #Produce volumetric plot
mlab.axes(xlabel='X', ylabel='Y', zlabel='Z') #Display axis
mlab.orientation_axes()

mlab.show()

Если вы действительно можете установить желаемый вид вручную, я бы просто сделал это. Чтобы получить правильные координаты для перехода к mlab.view(), прочитайте их с интерактивного графика при повороте сцены:

enter image description here

...