在matplotlib 3d图中旋转z轴

时间:2016-01-24 21:08:57

标签: python matplotlib rotation figure z-axis

如何旋转matplotlib图形的z轴使其显示为水平轴?我创建了以下3d图: enter image description here

我尝试调整

中的值
  

ax.view_init()   但无论我使用什么值,我都无法翻转z轴,以便三个轴的方向如下图所示:   enter image description here

我想改变所有数据的三个组成部分,以便我使用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()

1 个答案:

答案 0 :(得分:1)

您是否可以更改传递给绘图功能的X,Y,Z值的顺序?

使用this example

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

enter image description here

更改输入顺序:

ax.plot_wireframe(X,Z,Y,rstride = 10,cstride = 10)

enter image description here