matplotlib 旋转3D图形的z轴

p4rjhz4m  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(134)

如何旋转matplotlib图形的z轴,使其显示为水平轴?我创建了以下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()
qojgxg4l

qojgxg4l1#

你能改变你传递给绘图函数的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)

相关问题