Problems with Real Time Plotting

Hi, I am trying to get a live scrolling graph built from data send by two arduino sensors. Although live data is being shown in the graph I am not able to get the x axis scrolling. Actually, after reaching the point established by the counter (in this case cnt>10), the plotting stops. The arduino and Python codes I am working with are included below. I would very much appreciate if you can help me getting the scrolling graph working.

···

ARDUINO CODE

#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(tempF);

Serial.print(" , ");

Serial.println(pressure);

delay(250); //Pause between readings.

}

​PYTHON CODE

​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

cnt=0

def makeFig(): #Create a function that makes our desired plot

plt.ylim(0,90)                                 #Set y min and max values

plt.title('My Live Streaming Sensor Data')      #Plot the title

plt.grid(True)                                  #Turn the grid on

plt.ylabel('Temp F')                            #Set ylabels

plt.plot(tempF, 'ro-', label='Degrees F')       #plot the temperature

plt.legend(loc='upper left')                    #plot the legend

plt2=plt.twinx()                                #Create a second y axis

plt.ylim(0,90)                           #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 dataArray

temp = float( dataArray[0])            #Convert first element to floating number and put in temp

P =    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(P)                     #Building our pressure array by appending P readings

drawnow(makeFig)                       #Call drawnow to update our live graph

plt.pause(.000001)                     #Pause Briefly. Important to keep drawnow from crashing

cnt=cnt+1

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

    pressure.pop(0)