Вращение оси Z в 3D-рисунке Matplotlib

Как повернуть ось z фигуры matplotlib, чтобы она отображалась как горизонтальная ось? Я создал следующую 3d фигуру: введите описание изображения здесь

Я пытался настроить значения в

ax.view_init(), но независимо от того, какие значения я использовал, я не могу перевернуть ось z, чтобы ориентация трех осей выглядела так, как показано на следующем рисунке: введите описание изображения здесь

Я думал об изменении трех компонентов всех данных так, чтобы я использовал ось x для построения z-компонента данных, но тогда это будет очень неудобно для многих моих расчетов, и что более важно, я не знать, как использовать ax.set_aspect для сохранения всей фигуры в одном и том же масштабе в прямоугольной рамке (прямоугольной, поскольку (оригинальный) z-компонент данных обычно охватывает больший диапазон, чем компоненты x и y).

Так как мне повернуть ось Z (на 90 градусов)?

РЕДАКТИРОВАТЬ:

Просто чтобы уточнить мой вопрос. Используя пример, использованный в ответе, у меня есть следующий код, который может сгенерировать фигуру с одинаковым масштабом по всем трем осям, и даже если я изменю размер всплывающего окна, фигура по-прежнему будет иметь одинаковое соотношение сторон для трех Оси и выглядят одинаково. Это то, что я хочу, но с осью 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()

1 ответ

Решение

Вы можете просто изменить порядок значений X,Y,Z, которые вы передаете в свою функцию построения?

Используя этот пример:

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)

plt.show()

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

Изменение порядка ввода:

ax.plot_wireframe (X, Z, Y, rstride = 10, cstride = 10)

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

Другие вопросы по тегам