Обратная ось Z на 3D-графике matplotlib
Как можно изменить порядок на оси z трехмерного графика (т. Е. Отрицательный вверх, а положительный вниз)? Следующий код создает конус с основанием, указывающим вниз; есть ли команда (как ax.reverse_zlim3d(True)
или что-то еще?) что можно использовать для изменения порядка тиков?
Следующий код изображает конус с основанием, направленным вниз. Я хотел бы изменить порядок оси z так, чтобы она строилась так, чтобы основание было направлено вверх, как конус мороженого, с -1 вверху графика вместо нижнего.
from matplotlib import pyplot as p
from mpl_toolkits.mplot3d import Axes3D # @UnusedImport
import numpy as np
from math import pi, cos, sin
z = np.arange(0, 1, 0.02)
theta = np.arange(0, 2 * pi + pi / 50, pi / 50)
fig = p.figure()
axes1 = fig.add_subplot(111, projection='3d')
for zval in z:
x = zval * np.array([cos(q) for q in theta])
y = zval * np.array([sin(q) for q in theta])
axes1.plot(x, y, -zval, 'b-')
axes1.set_xlabel("x label")
axes1.set_ylabel("y label")
axes1.set_zlabel("z label")
p.show()
1 ответ
Решение
Использовать invert_zaxis
метод Axes3D
:
from matplotlib import pyplot as p
from mpl_toolkits.mplot3d import Axes3D # @UnusedImport
import numpy as np
from math import pi, cos, sin
z = np.arange(0, 1, 0.02)
theta = np.arange(0, 2 * pi + pi / 50, pi / 50)
fig = p.figure()
axes1 = fig.add_subplot(111, projection='3d')
for zval in z:
x = zval * np.array([cos(q) for q in theta])
y = zval * np.array([sin(q) for q in theta])
axes1.plot(x, y, -zval, 'b-')
axes1.set_xlabel("x label")
axes1.set_ylabel("y label")
axes1.set_zlabel("z label")
axes1.invert_zaxis()
p.show()