python动态爱心曲线_使用matplotlib动态刷新指定曲线实例

该博客介绍了如何利用Python的matplotlib库动态显示不断增长的数据。通过清除旧的绘图内容并重新绘制新数据,实现数据更新时图表的实时刷新。示例代码创建了两个窗口,展示了训练和测试损失随迭代次数变化的曲线,并使用plt.pause()函数控制显示间隔。
摘要由CSDN通过智能技术生成

我就废话不多说啦,还是直接看代码吧!

from matplotlib import pyplot as plt

import numpy as np

x = np.linspace(1, 100, 20)

y = x *2 +3

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

ax.scatter(x, y)

plt.ion()

for i in range(10):

y = x*i*0.1 + i

try:

ax.lines.remove(lines[0])

except Exception:

pass

lines = ax.plot(x ,y)

plt.pause(0.1)

补充知识:用Python的matplotlib库动态显示不断增长的数据

"""

Created on Mon Dec 07 16:34:10 2015

@author: SuperWang

"""

import matplotlib.pyplot as plt

import numpy as np

fig,ax=plt.subplots()

fig2,ax2=plt.subplots()

y1=[]

y2=[]

for i in range(50):

y1.append(np.sin(i))

y2.append(np.cos(i))

ax.cla()

ax.set_title("Loss")

ax.set_xlabel("Iteration")

ax.set_ylabel("Loss")

ax.set_xlim(0,55)

ax.set_ylim(-1,1)

ax.grid()

ax.plot(y1,label='train')

ax.plot(y2,label='test')

ax.legend(loc='best')

ax2.cla()

ax2.set_title("Loss")

ax2.set_xlabel("Iteration")

ax2.set_ylabel("Loss")

ax2.set_xlim(0,55)

ax2.set_ylim(-1,1)

ax2.grid()

ax2.plot(y1,label='train')

ax2.plot(y2,label='test')

ax2.legend(loc='best')

plt.pause(1)

要解决的问题如标题所示,原理很简单,就是当数据增长时,不断清空以前的绘画内容,然后把现有的数据重新画出来(数据是胡乱生成的)。

具体过程如下:

fig,ax=plt.subplots() 产生一个figure对象和一个axis对象。figure相当于一个窗口,而axis相当于一个画布。此句也可以用两句生成,即fig=plt.figure(num),括号中的参数是figure的ID,如果只需创建一个figure对象,那么可以省略。然后ax=fig.subplot(1,1,1),subplot()的具体用法可以去google或百度一下。ax.cla()就是在新数据到来时,先把之前的绘制的内容清空,接下来,ax.set_title(“Loss”),ax.set_xlabel(“Iteration”),ax.set_ylabel(“Loss”)都很简单,见名知意。ax.set_xlim(0,55),ax.set_ylim(-1,1)分别用来设置x轴和y轴的两个端点。ax.grid()给画布加上网格。ax.plot(y1,label='train'),ax.plot(y2,label='test')这两句是实际的绘制命令,其中,参数label是为以后生成图例用的。ax2.legend(loc='best')用来生成图例,loc参数代表图例位置location,而value:‘best'是其中的一种选择,除此之外,还有左上角等其他选项。最后,plt.pause(1)是为了显示上更直观,故意每绘制一次,暂停1秒,注意,这里的单位是秒。如果是实际的应用,而数据生成的过程又比较慢,此句完全可以省略。

这段代码中创建了两个窗口,在实验过程中,我发现只能有一个窗口被选中,即用鼠标点击哪个窗口,哪个窗口会动态地显示绘画过程,而另一个保持不动。

绘画过程截图如下:

2020042315043656.jpg

以上这篇使用matplotlib动态刷新指定曲线实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持WEB开发者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值