我正在学习如何使用mplot3d来生成漂亮的3d数据图,到目前为止我很高兴。我现在要做的是一个旋转表面的动画。为此,我需要为3D投影设置相机位置。我想这是可能的,因为在交互式使用matplotlib时,可以使用鼠标旋转曲面。但是我怎么能从一个脚本中做到这一点呢?我在mpl_toolkits中发现了很多转换。mplot3d.proj3d,但我找不到如何使用这些为我的目的,我没有找到任何例子,我试图做什么。
我正在学习如何使用mplot3d来生成漂亮的3d数据图,到目前为止我很高兴。我现在要做的是一个旋转表面的动画。为此,我需要为3D投影设置相机位置。我想这是可能的,因为在交互式使用matplotlib时,可以使用鼠标旋转曲面。但是我怎么能从一个脚本中做到这一点呢?我在mpl_toolkits中发现了很多转换。mplot3d.proj3d,但我找不到如何使用这些为我的目的,我没有找到任何例子,我试图做什么。
5条答案
按热度按时间7cwmlq891#
通过“相机位置”,听起来像是要调整用于查看3D打印的仰角和方位角。您可以使用
ax.view_init
来设置。我使用下面的脚本首先创建了图,然后我确定了一个好的高程,或elev
,从那里查看我的图。然后,我调整了方位角,或azim
,以改变我的图周围的整个360度,保存每个示例的图(并注意我保存图时的方位角)。对于更复杂的摄影机平移,可以调整仰角和Angular 以获得所需的效果。eblbsuwk2#
将“摄影机”位置应用于新的绘图会很方便。所以我画了图,然后用鼠标改变距离移动图。然后尝试在另一个图上复制包括距离的视图。我找到了那个Axx。get_axes()获取一个对象。azim和elev.
在Python…
3D图形..
编辑1...好吧,相机的位置是错误的思考方式。dist值。它作为整个图的一种hackey标量乘数,位于所有内容之上。
这适用于视图的放大/缩放:
后来的Graph。..
v1l68za43#
改变
azim
、dist
和elev
的最小示例添加一些简单的示例图像到解释在:https://stackoverflow.com/a/12905458/895245
下面是我的测试程序:
不带参数运行它会给出默认值:
main_-60_10_30.png
变化
azim
方位角是绕z轴e的旋转。例如:
main_-60_10_30.png
main_0_10_30.png
main_60_10_30.png
变化
dist
dist
似乎是数据坐标中距中心可见点的距离。main_-60_10_30.png
main_-60_5_30.png
main_-60_20_-30.png
变化
elev
由此可知,
elev
是眼睛与xy平面之间的夹角。main_-60_10_60.png
main_-60_10_30.png
main_-60_10_0.png
main_-60_10_-30.png
在matpotlib上测试==3.2.2.
byqmnocz4#
请尝试以下代码以查找最佳摄像机位置
使用if子句中提到的键盘键移动绘图的视角
Use **print** to get the camera positions
w1jd8yoj5#
Q:如何在matplotlib中设置view?
对于3D绘图,如何固定视图?
A:通过设置属性
ax.azim
和ax.level