Someone suggested earlier that I call fig.canvas.draw() to refresh my plot with new data. It worked great on the main plot, however I also have subplots included in the chart. The subplots are getting redrawn, however the old subplots, along with axes and other items are not getting cleared. Does anyone know how to get rid of the old subplot curves and other items when I replot?
def mpl_plot(self, plot_page, replot = 0):  #Data stored in lists  
    if plot_page == 1:             #Plot 1st Page                        
        plt = self.mplwidget.axes                                
        fig = self.mplwidget.figure #Add a figure           
    if plot_page == 2:          #Plot 2nd Page
        plt = self.mplwidget_2.axes 
        fig = self.mplwidget_2.figure    #Add a figure
    if plot_page == 3:           #Plot 3rd Page
        plt = self.mplwidget_3.axes 
        fig = self.mplwidget_3.figure    #Add a figure    
    if replot == 1:
        #self.mplwidget_2.figure.clear()          
        print replot
    par1 = fig.add_subplot(111)
    par2 = fig.add_subplot(111)      
    #Add Axes
    ax1 = par1.twinx()        
    ax2 = par2.twinx() 
    impeller = str(self.comboBox_impellers.currentText())  #Get Impeller
    fac_curves = self.mpl_factory_specs(impeller)    
    fac_lift = fac_curves[0]        
    fac_power = fac_curves[1]
    fac_flow = fac_curves[2]
    fac_eff = fac_curves[3]        
    fac_max_eff = fac_curves[4]
    fac_max_eff_bpd = fac_curves[5]
    fac_ranges = self.mpl_factory_ranges()
    min_range = fac_ranges[0]
    max_range = fac_ranges[1]
    #bep = fac_ranges[2]
    #Plot Chart
    plt.hold(False)    #Has to be included for  multiple curves
    #Plot Factory Pressure
    plt.plot(fac_flow, fac_lift, 'b', linestyle = "dashed", linewidth = 1)
    #Plot Factory Power
    ax1.plot(fac_flow, fac_power, 'r', linestyle = "dashed", linewidth = 1)       
    ax2.plot(fac_flow, fac_eff, 'g', linestyle = "dashed", linewidth = 1)
    #Move spines
    ax2.spines["right"].set_position(("outward", 25))
    self.make_patch_spines_invisible(ax2)
    ax2.spines["right"].set_visible(True)  
    #Plot x axis minor tick marks
    minorLocatorx = AutoMinorLocator()        
    ax1.xaxis.set_minor_locator(minorLocatorx)
    ax1.tick_params(which='both', width= 0.5)
    ax1.tick_params(which='major', length=7)
    ax1.tick_params(which='minor', length=4, color='k')
    #Plot y axis minor tick marks
    minorLocatory = AutoMinorLocator()
    plt.yaxis.set_minor_locator(minorLocatory)
    plt.tick_params(which='both', width= 0.5)
    plt.tick_params(which='major', length=7)
    plt.tick_params(which='minor', length=4, color='k')
    #Make Border of Chart White
    #Plot Grid        
    plt.grid(b=True, which='both', color='k', linestyle='-') 
    #set shaded Area 
    plt.axvspan(min_range, max_range, facecolor='#9BE2FA', alpha=0.5)    #Yellow rectangular shaded area
    #Set Vertical Lines
    plt.axvline(fac_max_eff_bpd, color = '#69767A')
    #BEP MARKER   *** Can change marker style if needed
    bep = fac_max_eff * 0.90     #bep is 90% of maximum efficiency point
    bep_corrected = bep * 0.90   # We knock off another 10% to place the arrow correctly on chart
    ax2.annotate('BEP', xy=(fac_max_eff_bpd, bep_corrected), xycoords='data',   #Subtract 2.5 shows up correctly on chart
            xytext=(-50, 30), textcoords='offset points',
            bbox=dict(boxstyle="round", fc="0.8"),
            arrowprops=dict(arrowstyle="-|>",
                            shrinkA=0, shrinkB=10,
                            connectionstyle="angle,angleA=0,angleB=90,rad=10"),
                    )
    #Set Scales         
    plt.set_ylim(0,max(fac_lift) + (max(fac_lift) * 0.40))    #Pressure 
    #plt.set_xlim(0,max(fac_flow))
    ax1.set_ylim(0,max(fac_power) + (max(fac_power) * 0.40))     #Power
    ax2.set_ylim(0,max(fac_eff) + (max(fac_eff) * 0.40))    #Effiency
    # Set Axes Colors
    plt.tick_params(axis='y', colors='b')
    ax1.tick_params(axis='y', colors='r')
    ax2.tick_params(axis='y', colors='g')
    # Set Chart Labels        
    plt.set_xlabel("BPD")
    plt.set_ylabel("Feet" , color = 'b')
    #To redraw plot
    fig.canvas.draw()
