View Single Post
  #1  
Old 01-23-2017, 12:43 PM
haohaoxuexi1 haohaoxuexi1 is offline
Member
 
Join Date: Sep 2015
Posts: 81
Smile about maplotlib in Vizard

Code:
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.
Reply With Quote