如何旋转matplotlib图形的z轴以使其显示为横轴?我已经创建了下面的3D图形: 旋转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()
它的工作原理。问题是我想在所有3个轴上保持图形的比例相同。例如,在附图中,数据在z方向上的范围扩大了2.5倍,所以我只是使用ax.set_aspect并将2.5设置为比率。如果我将输入顺序更改为ax.plot(z,x,y),那么如何保持比例不变(这意味着现在的x轴必须更长) – Physicist
@Physicist http://stackoverflow.com/a/12371373/1461850 – atomh33ls
我尝试了ax.auto_scale_xyz,但它仍然不能修正长宽比,所以我仍然可以通过改变弹出窗口的大小来改变图的比例。如果我使用set_aspect,那么我只需要确定z轴和x-y平面的比例。如果我不切换绘图顺序,这将起作用,但是如果按照您的建议切换绘图顺序,那么它不会改变我想要的比例。现在我需要x轴比y轴和z轴长2.5倍,并且始终保持整个图形的宽高比不变。 – Physicist