繁体   English   中英

在matplotlib 3d图中旋转z轴

[英]rotating the z-axis in matplotlib 3d figure

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

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM