我正在學習如何使用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