如何将matplotlib图形的z轴旋转,使其显示为水平轴?我创建了以下3D图形:
我尝试调整以下代码中的值:
ax.view_init()
但无论我使用什么值,都无法翻转z轴,使得三个轴的方向与下图中的轴相同: 我考虑过改变所有数据的三个分量,以便使用x轴来绘制数据的z分量,但这样做会对我的许多计算非常不方便,更重要的是,我不知道如何使用ax.set_aspect来保持整个图形在一个矩形框中的相同比例(矩形框之所以是矩形,是因为(原始)数据的z分量通常跨越的范围比x和y分量大)。
那么,如何将z轴旋转90度?
ax.view_init()
但无论我使用什么值,都无法翻转z轴,使得三个轴的方向与下图中的轴相同: 我考虑过改变所有数据的三个分量,以便使用x轴来绘制数据的z分量,但这样做会对我的许多计算非常不方便,更重要的是,我不知道如何使用ax.set_aspect来保持整个图形在一个矩形框中的相同比例(矩形框之所以是矩形,是因为(原始)数据的z分量通常跨越的范围比x和y分量大)。
那么,如何将z轴旋转90度?
编辑:
只是为了澄清我的问题。使用答案中提供的示例,我有以下代码可以生成一个具有相同比例的图形,并且即使调整弹出窗口的大小,该图形在三个轴上仍然具有相同的纵横比并且看起来相同。这就是我想要的,但是希望将z轴旋转90度使其水平显示(期望的坐标系统看起来像上图中的电磁波图)。如果我交换三个轴的绘制顺序,我确实可以得到一个水平的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()