Matplotlib 3D绘图如何反转Z轴

12
如何反转三维图中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个回答

24

使用Axes3Dinvert_zaxis方法:

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()

这里输入图片描述


2
由于某些原因,这会从我的 z 轴中删除所有刻度和刻度标签。 - Translunar
使用invert.xaxis()和invert.yaxis()会同时删除x轴和y轴的刻度和标签!! - Masih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接