我正在学习如何使用mplot3d生成3D数据的美妙情节,到目前为止我非常高兴。我现在想做的是旋转表面的一点动画。为此,我需要为3D投影设置相机位置。我想这一定是可能的,因为交互式使用matplotlib时可以使用鼠标旋转曲面。但是我怎么能从脚本中做到这一点? 我在mpl_toolkits.mplot3d.proj3d中发现了很多变换,但我无法找到如何使用这些用于我的目的,我没有找到任何我想要做的示例。如何使用python/matplotlib设置3d图的“摄像头位置”?
回答
通过“摄像头位置”,听起来您想要调整用于查看3D图的高程和方位角。我已经使用了下面的脚本来创建剧情,然后我确定了一个很好的海拔,或者从中查看我的剧情。然后我调整了方位角或azim
,以改变我的地块周围的全部360度,在每个实例处保存图(并且注意到我保存该图的方位角)。对于更复杂的摄像机平移,您可以调整高程和角度以达到所需的效果。
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(fig)
ax.scatter(xx,yy,zz, marker='o', s=20, c="goldenrod", alpha=0.6)
for ii in xrange(0,360,1):
ax.view_init(elev=10., azim=ii)
savefig("movie%d.png" % ii)
打我吧!在附注中,这些可以用作'ax.elev'和'ax.azim'属性。你也可以写下'ax.azim = ii'或甚至'ax.azim + = 1'来达到同样的效果。 –
抱歉,我击败了你,但公平点四周。这也仅仅是我的代码片段,在for循环中比view_init和savefig更多。 =) – cosmosis
感谢cosmosis和乔,那正是我一直在寻找的。由于我现在知道要寻找什么,我还发现ax.dist与ax.azim和ax.elev一起允许在极坐标中设置相机位置。 –
将相机位置应用到新的情节会是多么方便。 所以我绘制,然后用鼠标移动阴谋改变距离。然后尝试复制包含另一个图上距离的视图。 我发现axx.ax.get_axes()使用旧的.azim和.elev得到了一个对象。
在Python ...
axx=ax1.get_axes()
azm=axx.azim
ele=axx.elev
dst=axx.dist # ALWAYS GIVES 10
#dst=ax1.axes.dist # ALWAYS GIVES 10
#dst=ax1.dist # ALWAYS GIVES 10
后来3D图形...
ax2.view_init(elev=ele, azim=azm) #Works!
ax2.dist=dst # works but always 10 from axx
编辑1 ... OK,摄像头位置的思维有关.dist值走错了路。它作为整个图形的一种hackey标量乘法器,在所有方面都占据首位。视图的
这适用于放大/缩小:
xlm=ax1.get_xlim3d() #These are two tupples
ylm=ax1.get_ylim3d() #we use them in the next
zlm=ax1.get_zlim3d() #graph to reproduce the magnification from mousing
axx=ax1.get_axes()
azm=axx.azim
ele=axx.elev
后来曲线图...
ax2.view_init(elev=ele, azim=azm) #Reproduce view
ax2.set_xlim3d(xlm[0],xlm[1]) #Reproduce magnification
ax2.set_ylim3d(ylm[0],ylm[1]) #...
ax2.set_zlim3d(zlm[0],zlm[1]) #...
+1用于调出哈克标量乘法。如果你希望透视,这是非常烦人的。 – user5920660
- 1. WPF 3D摄像头位置
- 2. 如何使用three.js动态设置摄像头位置
- 3. 设置摄像头位置CCScene
- 4. 设置摄像头转动改变摄像机的位置
- 5. 3D摄像机位置XNA
- 6. 如何从头部位置计算全息图效果的3d摄像头位置
- 7. 如何检测前置摄像头放置在设备上的位置?
- 8. 如何在中心AR摄像机上设置3D模型的位置?
- 9. Unity陀螺仪重置摄像头位置(如oculus recenter摄像头)
- 10. 如何使用摄像头在3D空间中定位对象
- 11. 如何获取前置摄像头拍摄的图像路径
- 12. 在three.js中查找和设置摄像头的位置?
- 13. 如何使用DotNet访问网络摄像头设置(如Skype)
- 14. AndroVM中的摄像头和GPS位置
- 15. JavaFX 3D - 如何使用UI控件为具有3D对象和SubScene的组设置不同的摄像头?
- 16. 使用TrackballControls时重置摄像头位置/旋转
- 17. threejs - 使用PointerLockControls时重置摄像头位置/旋转
- 18. 如何从拍摄图像的位置查找位置?
- 19. 如何使用OpenCV摄像头捕获设置帧率
- 20. 如何使用OpenCV在Android中设置摄像头分辨率?
- 21. 如何使用EmguCV设置网络摄像头属性?
- 22. 如何在OpenCV + Qt5上设置在Android上使用摄像头
- 23. 如何使用Python设置摄像头服务器?
- 24. 测试iPhone4上的前置摄像头或后置摄像头
- 25. 如何重置摄像头位置进入VR?
- 26. 将内置摄像头捕获的图片设置为ImageView
- 27. 如何在Android中从摄像头获取当前拍摄图片的位置
- 28. 如何检查前置摄像头ID?捕获的图像也是来自前置摄像头的镜像。
- 29. JMF:设置摄像头的FPS
- 30. 如何通过css3设置3D图像
旁注为那些不知道如何在jupyter笔记本交互旋转:您可以使用'%matplotlib笔记本' – YvesgereY