2

如何旋转 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()
4

1 回答 1

0

您可以更改传递给绘图函数的 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)

在此处输入图像描述

于 2016-01-25T12:34:38.233 回答