我正在使用Matplotlib将一些数据绘制为3D表面图 . 我使用的代码非常类似于3D surface plot example . 它生成如下所示的图:
该图的问题在于Z轴不是垂直的 . 如何使Z轴垂直?
我检查了可用的不同API,找到了view_init . 通过使用 view_init
设置绘图的低仰角( elev=1
),我可以使Z轴垂直,如下所示:
但是,这里的问题是在低海拔时,Y轴刻度标签都被覆盖,无法正确查看 . 所以我需要绘图处于高海拔并且X-Y平面旋转角度如图1所示 . 如何为此绘图实现垂直Z轴?
我不知道Matlab,但我知道Matplotlib源自Matlab API . 因此,我查看了Matlab文档中的曲面图示例,发现Z轴在它们的示例中似乎是垂直的 . 下图显示了一个高海拔图示:
Update 1: 根据Bentoy13的建议,我设置 view_init(elev=30, azim=-37.5)
并获得以下结果 . 它更好,但还不垂直:
相比之下,Matlab图中的Z轴是完全垂直的 . 另外,从这个角度可以看出,我实际上无法使用这个 azim=-37.5
,因为隐藏了一些信息 . 还有其他方法吗? :-)
1 回答
在Matlab文档中给出的示例中,表面图通常在特殊位置查看,该位置由命令
view
给出:命令view设置轴的视点 . 根据文档,
view(3)
设置默认的三维视图,方位角= -37.5,高程= 30 .EDIT
具有垂直z轴的问题不是轴是垂直的,而是透视问题 . 默认情况下,Matlab使用正交投影绘制3D曲面,但matplotlib似乎使用透视投影绘制 . 可悲的是,matplotlib没有提供用于设置此API的API ...
EDIT 2
看来,以下补丁对于在正投影中绘制3D非常有用:
我不赞成这个补丁,你可以找到here .