失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)

python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)

时间:2022-12-30 00:59:25

相关推荐

python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)

实时绘制三维图并更新窗口

# -*- coding: utf-8 -*-"""@File : test.py@Time : /5/26 18:09@Author : Dontla@Email : sxana@@Software: PyCharm"""from matplotlib import pyplot as plt # 用来绘制图形from mpl_toolkits.mplot3d import Axes3Dimport 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 : /5/26 18:09@Author : Dontla@Email : sxana@@Software: PyCharm"""from matplotlib import pyplot as plt # 用来绘制图形from mpl_toolkits.mplot3d import Axes3Dimport numpy as npX1 = X2 = np.arange(-5, 15, 1)X1, X2 = np.meshgrid(X1, X2)Z = 1 / 2 * X1 ** 2# 绘制三维图初始角度azim = -60elev = 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 如何实时绘制三维动态窗口?(可鼠标拖动角度)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。