PDA

View Full Version : about maplotlib in Vizard


haohaoxuexi1
01-23-2017, 01:43 PM
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

import time
import random

import viz
import viztask

import vizmatplot

viz.go()

#determine size of arrays (number of samples)
MAX_SIZE_OF_ARRAY = 5000

#create arrays
array_x, array_y = [],[]

#fill array with zeros
for i in range(0,MAX_SIZE_OF_ARRAY):
array_x.append(0)
array_y.append(0)

###---matplotlib codes---###
fig = plt.figure() #instantiate pyplot figure
ax = fig.add_subplot(111) #create axes
ax.axis([0,MAX_SIZE_OF_ARRAY,0,1]) #determine axis limits
line, = ax.plot(array_x,array_y) #instantiate plot
matplot = vizmatplot.Show(fig)
matplot.showDrawRate(viz.ON)

def plotter():
""" task that randomly creates y data while incrementing x data"""
while True:
#yield None
for i in range (0,MAX_SIZE_OF_ARRAY):
array_x[i] = (i)
array_y[i] = (random.random())
ax.axis([0, MAX_SIZE_OF_ARRAY, 0, 1]) #make sure the axis limits don't change
line.set_data(array_x, array_y) #set the data points

yield None #wait at least a frame before setting new data points
# yield viztask.waitTime(matplot.rate) #or wait draw rate length calculated in module

for b in range(0,MAX_SIZE_OF_ARRAY): #clear out the arrays
array_x[b] = 0
array_y[b] = 0
line.set_data(array_x,array_y) #clear graph by setting all data points to [0,0]

viztask.schedule( plotter() )

this code comes out an error of "RuntimeError: dictionary changed size during iteration", anyone know how to solve it?

the code was from matplotlib website in Vizard webpage.