python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)
生活随笔
收集整理的這篇文章主要介紹了
python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實時繪制三維圖并更新窗口
# -*- coding: utf-8 -*- """ @File : test.py @Time : 2020/5/26 18:09 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ from matplotlib import pyplot as plt # 用來繪制圖形 from mpl_toolkits.mplot3d import Axes3D import numpy as npX1 = X2 = np.arange(-5, 15, 1) X1, X2 = np.meshgrid(X1, X2)Z = 1 / 2 * X1 ** 2# 創建繪制實時損失的動態窗口 plt.ion() for i in range(30000):plt.clf() # 清除之前畫的圖fig = plt.gcf() # 獲取當前圖ax = fig.gca(projection='3d') # 獲取當前軸ax.plot_surface(X1, X2, Z, cmap='rainbow')plt.pause(0.001) # 暫停一段時間,不然畫的太快會卡住顯示不出來plt.ioff() # 關閉畫圖窗口ZZ = Z - X1 + 2 * X2 # 變換Z值# 加這個的目的是繪制完后不讓窗口關閉 plt.show()結果:
添加鼠標拖動觀察功能
# -*- coding: utf-8 -*- """ @File : test.py @Time : 2020/5/26 18:09 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ from matplotlib import pyplot as plt # 用來繪制圖形 from mpl_toolkits.mplot3d import Axes3D import numpy as npX1 = X2 = np.arange(-5, 15, 1) X1, X2 = np.meshgrid(X1, X2)Z = 1 / 2 * X1 ** 2# 繪制三維圖初始角度 azim = -60 elev = 30# 創建繪制實時損失的動態窗口 plt.ion() for i in range(30000):plt.clf() # 清除之前畫的圖fig = plt.gcf() # 獲取當前圖ax = fig.gca(projection='3d') # 獲取當前軸ax.view_init(elev, azim) # 設定角度ax.plot_surface(X1, X2, Z, cmap='rainbow')plt.pause(0.001) # 暫停一段時間,不然畫的太快會卡住顯示不出來elev, azim = ax.elev, ax.azim # 將當前繪制的三維圖角度記錄下來,用于下一次繪制(放在ioff()函數前后都可以,但放在其他地方就不行)# elev, azim = ax.elev, ax.azim - 1 # 可自動旋轉角度,不需要人去拖動plt.ioff() # 關閉畫圖窗口ZZ = Z - X1 + 2 * X2 # 變換Z值# 加這個的目的是繪制完后不讓窗口關閉 plt.show()結果:
拖動觀察
自動旋轉
參考文章1:Python學習(一) —— matplotlib繪制三維軌跡圖
參考文章2:在Matplotlib 3D圖中獲取視角/攝像機角度?
總結
以上是生活随笔為你收集整理的python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python matplotlib.py
- 下一篇: 深度学习与神经网络关系(BP网络【浅层】