Расположение размещения оси y и z в графике 3D matplotlib
По умолчанию, построение набора точек (или любого другого) в 3D с matplotlib
, определяет ось z
по вертикали, как показано здесь (код ниже):
![введите описание изображения здесь]()
Мне нужно обменивать ось z
и y
, так что ось y
показана вертикально.
Я огляделся, но не нашел способа сказать matplotlib
для этого.
Добавить: Я не хочу прибегать к хакеру, где я меняю данные и метки. Это простой 3-х точечный 3D-график, но мне приходится строить гораздо более сложные поверхности. Я ищу общее решение, а не просто то, что работает с разбросами. Простой способ сказать matplotlib
поместить ось y
вертикально вместо оси z
- это чистый способ сделать это.
MWE
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter([0.2, 0.5, 0.8], [2.3, 0.47, 1.], [2.1, 5.3, 0.7])
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
Ответы
Ответ 1
Одна из возможностей состоит в том, чтобы поменять положение y и z в данных и метках соответственно. вместо
ax.scatter([0.2, 0.5, 0.8], [2.3, 0.47, 1.], [2.1, 5.3, 0.7])
использовать
ax.scatter([0.2, 0.5, 0.8], [2.1, 5.3, 0.7], [2.3, 0.47, 1.])
и обозначить как ax.set_ylabel('z')
и ax.set_zlabel('y')
Ответ 2
Я не думаю, что это возможно в настоящее время. ax.view_init()
также должен принять третий угол. Я открыл проблему на github, https://github.com/matplotlib/matplotlib/issues/14453#issue-452397120, надеюсь, кто-то заинтересован в реализации этой функции.