matplotダイナミック描画アニメーションの例


10個の乱数
 # -*- coding: utf-8 -*-  
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
fig = plt.figure() 
axes1 = fig.add_subplot(111) 
line, = axes1.plot(np.random.rand(10)) 
#  update        data_gen,
#            framenum 
def update(data): 
  line.set_ydata(data) 
  return line, 
#     10      
def data_gen(): 
  while True: 
    yield np.random.rand(10) 
ani = animation.FuncAnimation(fig, update, data_gen, interval=2*1000)
plt.show()

バンドストップ
import matplotlib.pyplot as plt  
import numpy as np  
import matplotlib.animation as animation  
  
pause = False  
def simData():  
    t_max = 10.0  
    dt = 0.05  
    x = 0.0  
    t = 0.0  
    while t < t_max:  
        if not pause:  
            x = np.sin(np.pi*t)  
            t = t + dt  
        yield t, x  
  
def onClick(event):  
    global pause  
    pause ^= True  
  
def simPoints(simData):  
    t, x = simData[0], simData[1]  
    time_text.set_text(time_template%(t))  
    line.set_data(t, x)  
    return line, time_text  
  
fig = plt.figure()  
ax = fig.add_subplot(111)  
line, = ax.plot([], [], 'bo', ms=10) # I'm still not clear on this stucture...  
ax.set_ylim(-1, 1)  
ax.set_xlim(0, 10)  
  
time_template = 'Time = %.1f s'    # prints running simulation time  
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)  
fig.canvas.mpl_connect('button_press_event', onClick)  
ani = animation.FuncAnimation(fig, simPoints, simData, blit=False, interval=10,  
    repeat=True)  
plt.show() 

csvインポートバンドから一時停止
# -*- coding: utf-8 -*-
"""
Spyder Editor

This temporary script file is located here:
C:\Users\user\.spyder2\.temp.py
"""
"""
Show how to modify the coordinate formatter to report the image "z"
value of the nearest pixel given x and y
"""
# coding: utf-8

import time
import string
import os  
import math  
import pylab

import numpy as np
from numpy import genfromtxt
import matplotlib
import matplotlib as mpl
from matplotlib.colors import LogNorm
from matplotlib.mlab import bivariate_normal

import matplotlib.pyplot as plt
import matplotlib.cm as cm


import matplotlib.animation as animation

      
pause  = False
linenum=0

metric = genfromtxt('D:\export.csv', delimiter=',')

lines=len(metric)  
#print len(metric)
#print len(metric[4])
#print metric[4] 

rowdatas=metric[:,0]
for index in range(len(metric[4])-1):
    a=metric[:,index+1]
    rowdatas=np.row_stack((rowdatas,a))
    
#print len(rowdatas)
#print len(rowdatas[4])
#print rowdatas[4] 
#    

#plt.figure(figsize=(38,38), dpi=80)
#plt.plot(rowdatas[4] )
#plt.xlabel('time')
#plt.ylabel('value')
#plt.title("USBHID data analysis")
#plt.show()


##      list,      list      , metric[0],metric[1],... 
listdata=rowdatas.tolist()
print listdata[4]
#fig = plt.figure()  
#window = fig.add_subplot(111)  
#line, = window.plot(listdata[4] )  
 
#plt.ion()
#fig, ax = plt.subplots()
#line, = ax.plot(listdata[4],lw=2)
#ax.grid()


fig = plt.figure()  
ax = fig.add_subplot(111)  
line, = ax.plot(listdata[4],lw=2 ) # I'm still not clear on this stucture...
ax.grid()

time_template = 'Data ROW = %d'
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
 
#ax = plt.axes(xlim=(0, 700), ylim=(0, 255)) 
#line, = ax.plot([], [], lw=2) 
def onClick(event):
    global pause
    pause ^= True
    print 'user click the mouse!'
    print 'you pressed', event.button, event.xdata, event.ydata
#   event.button=1        2      3         


def getData():  
    global listdata
    global linenum
    t = 0  
    while t < len(listdata[4]):
        if not pause: 
            linenum=linenum+1
        yield listdata[linenum-1]
#    while t < len(listdata[4]):  
#        t = t + 1  
#        print t,t
#        yield t, t  
        
def update(data):  
    global linenum
    line.set_ydata(data)    
    time_text.set_text(time_template % (linenum))
    return line,  

def init():
#    ax.set_ylim(0, 1.1)
#    ax.set_xlim(0, 10)
#    line.set_data(xdata)
    plt.xlabel('time')
    plt.ylabel('Time')
    plt.title('USBHID Data analysis')
    return line,
fig.canvas.mpl_connect('button_press_event', onClick)    
ani = animation.FuncAnimation(fig, update , getData , blit=False, interval=1*1000,init_func=init,repeat=False)  
plt.show()  


#my_data = genfromtxt('D:\export.csv', delimiter=',')
#rgbdata=my_data、255
#plt.figure(figsize=(38,38), dpi=80)
#
#for index in range(3):
#    row9=rgbdata[:,index]
#    print "row %d size is
"%(index) # plt.plot(row9 ) # plt.xlabel('time') # plt.ylabel('value') # plt.title("USBHID data analysis") # plt.legend() ## plt.cla() ## plt.clf() #plt.show() #plt.figure(1) #plt.imshow(rgbdata, interpolation='nearest') #plt.grid(True) #fig = plt.figure() # 0 #plt.savefig() # #plt.close('all') # 0