Как повернуть ось z фигуры matplotlib так, чтобы она отображалась как горизонтальная ось? Я создал следующий 3d рисунок: Вращение оси z в matplotlib 3d figure
Я попытался корректировки значений в
ax.view_init() , но независимо от того, какие ценности я, я не могу перевернуть ось г так что ориентация трех осей появляются как как те, в следующем рисунке:
я подумал об изменении всех трех компонентов всех данных, так что я использую ось х, чтобы построить Z-составляющую данных, но тогда это будет очень неудобно для многих моих вычислений, и что более важно, я не знаю, как использовать ax.set_aspect, чтобы сохранить всю фигуру в том же масштабе в прямоугольном прямоугольнике (прямоугольное, потому что (исходный) z- компонент данных обычно охватывает больший диапазон, чем компоненты x и y).
Итак, как мне повернуть ось z (на 90 градусов)?
EDIT:
Просто чтобы прояснить мой вопрос. Используя пример, используемый в ответе, у меня есть следующий код, который может генерировать фигуру с одинаковой шкалой во всех трех осях, и даже если я изменил размер окна всплывающего окна, этот показатель все еще имеет одинаковое соотношение сторон для трех оси и выглядят одинаково. Это то, что я хочу, но с осью z, повернутой на 90 градусов, поэтому она выглядит горизонтальной (желаемая система координат выглядит так, как показано на приведенном выше рисунке волны EM). Если я переключу порядок построения трех осей, я получаю горизонтальную ось z (которая изображается как ось x), но тогда я не могу использовать ax.set_aspect для изменения масштаба.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
ax.set_xlim(-30,30)
ax.set_ylim(-30,30)
ax.set_zlim(-90,90)
ax.set_aspect(3, 'box-forced')
plt.show()
Работает. проблема в том, что я хочу сохранить масштаб моей фигуры одинаково во всех трех осях. Например, на рисунке, который я прикрепил, данные охватывают больший диапазон в направлении z в 2,5 раза, поэтому я просто использую ax.set_aspect и устанавливаю 2,5 в качестве отношения. Если изменить порядок ввода на ax.plot (z, x, y), то как сохранить масштаб неизменным (что означает, что теперь ось x должна быть длиннее) – Physicist
@Физист http://stackoverflow.com/a/12371373/1461850 – atomh33ls
Я пробовал ax.auto_scale_xyz, но при этом он не фиксирует соотношение сторон, поэтому я могу изменить масштаб фигуры, просто изменив размер всплывающего окна. Если я использую set_aspect, тогда я просто фиксирую отношение оси z и плоскости x-y. Это работает, если я не переключаю порядок сюжета, но как только я переключу порядок сюжета, как вы предложили, он не меняет соотношение, которое я хочу. Теперь мне нужно, чтобы ось x появилась на 2.5x больше, чем y и ось z, и сохраняйте соотношение сторон всей фигуры неизменным все время. – Physicist