我试图自动更新散点图。我的X和Y值的来源是外部的,数据是以非预测的时间间隔(轮次)自动推送到我的代码中的。
我只是在整个过程结束时才设法绘制所有数据,而我试图不断地将数据添加到画布中。
我得到的(在整个运行结束时)是:
而我所追求的是:
我的代码的简化版本:
import matplotlib.pyplot as plt
def read_data():
#This function gets the values of xAxis and yAxis
xAxis = [some values] #these valuers change in each run
yAxis = [other values] #these valuers change in each run
plt.scatter(xAxis,yAxis, label = 'myPlot', color = 'k', s=50)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
3条答案
按热度按时间3b6akqbq1#
有几种方法可以制作matplotlib图的动画。下面让我们看两个使用散点图的最小示例。
(a)使用交互模式
plt.ion()
要使动画发生,我们需要一个事件循环。(“交互式打开”)。然后需要首先绘制图形,然后可以在循环中更新绘图。在循环中,我们需要绘制画布,并为窗口引入一个小停顿来处理其他事件(像鼠标交互等)。没有这个暂停窗口将冻结。最后我们调用
plt.waitforbuttonpress()
让窗口保持打开,即使动画已经完成。(B)使用
FuncAnimation
以上大部分都可以使用
matplotlib.animation.FuncAnimation
自动化。FuncAnimation将负责循环和重绘,并在给定的时间间隔后不断调用函数(在本例中为animate()
)。动画将仅在调用plt.show()
时启动,从而自动在绘图窗口的事件循环中运行。qq24tv8q2#
据我所知,你想以交互方式更新你的图。如果是这样,你可以使用图而不是散点图,并像这样更新你的图的数据。
如果这是你正在寻找的行为,你只需要创建一个函数,附加sp的数据,并在该函数中获得你想要绘制的新点(无论是I/O管理还是你正在使用的任何通信过程)。
1u4esq0p3#
下面是一种在笔记本电脑中创建交互式绘图的方法
这将迭代地更新相同的图。详细描述在这里https://pythonguides.com/matplotlib-update-plot-in-loop/