Problems with scrolling graph


import serial # import Serial Library
import numpy # Import numpy
import matplotlib.pyplot as plt #import matplotlib library
from drawnow import *

tempF= []
pressure= []

arduinoData = serial.Serial('com6', 115200) #Creating our serial object
named arduinoData
plt.ion() #Tell matplotlib you want interactive mode to plot live data

def makeFig(): #Create a function that makes our desired plot
    plt.ylim(0,500) #Set y min and max
    plt.title('Frequency vs Time') #Plot the title
    plt.grid(True) #Turn the grid on
    plt.ylabel('Frequency (pulses/sec)') #Set
    plt.plot(tempF, 'ro-', label='pulses/sec') #plot the temperature
    plt.legend(loc='upper left') #plot the legend
    plt2=plt.twinx() #Create a second y axis
    plt.ylim(0,500) #Set limits of second y axis-
adjust to readings you are getting
    plt2.plot(pressure, 'b^-', label='Pressure (Pa)') #plot pressure data
    plt2.set_ylabel('Pressrue (Pa)') #label second y axis
    plt2.ticklabel_format(useOffset=False) #Force matplotlib to
NOT autoscale y axis
    plt2.legend(loc='upper right') #plot the legend
while True: # While loop that loops forever
    while (arduinoData.inWaiting()==0): #Wait here until there is data
        pass #do nothing
    arduinoString = arduinoData.readline() #read the line of text from the
serial port
    dataArray = arduinoString.split(',') #Split it into an array called
    temp = float(dataArray[0]) #Convert first element to floating
number and put in temp
    pres = float(dataArray[1]) #Convert second element to
floating number and put in P
    tempF.append(temp) #Build our tempF array by
appending temp readings
    pressure.append(pres) #Building our pressure
array by appending P readings
    drawnow(makeFig) #Call drawnow to update our live
    plt.pause(.000001) #Pause Briefly. Important to keep
drawnow from crashing
    if(cnt>10): #If you have 50 or more points,
delete the first one from the array
        tempF.pop(0) #This allows us to just see the
last 50 data points


#include "Wire.h" // imports the wire library for talking over I2C
#include "Adafruit_BMP085.h" // import the Pressure Sensor Library
Adafruit_BMP085 mySensor; // create sensor object called mySensor

float tempC; // Variable for holding temp in C
float tempF; // Variable for holding temp in F
float pressure; //Variable for holding pressure reading

void setup(){
Serial.begin(115200); //turn on serial monitor
mySensor.begin(); //initialize mySensor

void loop() {
tempC = mySensor.readTemperature(); // Be sure to declare your variables
tempF = tempC*1.8 + 32.; // Convert degrees C to F
pressure=mySensor.readPressure(); //Read Pressure

Serial.print(" , ");
delay(250); //Pause between readings.


View this message in context:
Sent from the matplotlib - devel mailing list archive at