python中plot实现即时数据动态显示方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013468614/article/details/58689735

Matlab使用Plot函数实现数据动态显示方法总结中介绍了两种实现即时数据动态显示的方法。考虑到使用python的人群日益增多,再加上本人最近想使用python动态显示即时的数据,网上方法很少,固总结于此。


示例代码1

import matplotlib.pyplot as plt
import numpy as np
import time
from math import *

plt.ion() #开启interactive mode 成功的关键函数
plt.figure(1)
t = [0]
t_now = 0
m = [sin(t_now)]

for i in range(2000):
    t_now = i*0.1
    t.append(t_now)#模拟数据增量流入
    m.append(sin(t_now))#模拟数据增量流入
    plt.plot(t,m,'-r')
    plt.draw()#注意此函数需要调用
    time.sleep(0.01)

这里写图片描述


示例代码2

上面的方式,可以在跳出的画图面板内动态显示,但是如果想在jupyter notebook中直接动态显示,上面的方法将无效。因此,补上在jupyter notebook中可行的动态显示示例程序。以供举一反三之用。

这里写代码片import math
import random
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline

# set up matplotlib
is_ipython = 'inline' in matplotlib.get_backend()
if is_ipython:
    from IPython import display

plt.ion()

def plot_durations(y):
    plt.figure(2)
    plt.clf()
    plt.subplot(211)
    plt.plot(y[:,0])
    plt.subplot(212)
    plt.plot(y[:,1])

    plt.pause(0.001)  # pause a bit so that plots are updated
    if is_ipython:
        display.clear_output(wait=True)
        display.display(plt.gcf())



x = np.linspace(-10,10,500)
y = []
for i in range(len(x)):
    y1 = np.cos(i/(3*3.14))
    y2 = np.sin(i/(3*3.14))
    y.append(np.array([y1,y2]))
    plot_durations(np.array(y))

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013468614/article/details/58689735