[英]How to get stable plot using matplotlib
我正在嘗試使用 matplotlib 繪制手的 3D 姿勢。 對於視頻的每一幀,或者我們可以說如果數據發生了變化,那么繪圖大小(X、Y、Z)也會隨着對象(手部姿勢)的大小和位置而變化。 下面的更多細節是包含下一幀和上一幀的兩個屏幕截圖,在屏幕截圖中我們可以看到 x、y 和 z 軸隨着手部姿勢的變化而變化。
我的問題是如何獲得一個穩定的圖,即使對象位置會改變,它的大小也不會改變。
下面的參考是另一張顯示穩定圖的圖像,我正在嘗試這樣做。 正如我們所看到的,輸入幀和對象大小正在變化,但繪圖大小相同。 無論對象大小是否會在繪圖中發生變化。
下面是我的繪圖代碼。 請把它當作繪圖示例,我只分享繪圖代碼,因為問題出在繪圖代碼上。
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elev=20, azim=75)
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')
rgb_dict = get_keypoint_rgb(skeleton)
for i in range(len(skeleton)): # here is skeleton, just ignore it
joint_name = skeleton[i]['name']
pid = skeleton[i]['parent_id']
parent_joint_name = skeleton[pid]['name']
x = np.array([kps_3d[i, 0], kps_3d[pid, 0]]) # kps_3d is pose data
y = np.array([kps_3d[i, 1], kps_3d[pid, 1]])
z = np.array([kps_3d[i, 2], kps_3d[pid, 2]])
ax.plot(x, z, -y, c = np.array(rgb_dict[parent_joint_name])/255., linewidth = line_width)
ax.scatter(kps_3d[i, 0], kps_3d[i, 2], -kps_3d[i, 1], c = np.array(rgb_dict[joint_name]).reshape(1, 3)/255., marker='o')
ax.scatter(kps_3d[pid, 0], kps_3d[pid, 2], -kps_3d[pid, 1], c = np.array(rgb_dict[parent_joint_name]).reshape(1, 3)/255., marker='o')
正如ax.scatter
文檔所示,它用於獲得y 與 x 的散點圖,其中標記大小和/或顏色不同。
我可以使用哪個替代函數來獲得穩定的圖?
尋求一些有價值的建議。
嘗試通過這些代碼行設置繪圖限制:
ax.set_xlim3d(-0.1, 0.1)
ax.set_ylim3d(-0.1, 0.1)
ax.set_zlim3d(-0.1, 0.1)
根據需要調整數字。 您可能還需要調整視角:
ax.view_init(elev=28., azim=55)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.