From: Eric F. <ef...@ha...> - 2006-12-22 09:17:25
|
Try putting pylab.close() after each pylab.savefig() Eric ch...@se... wrote: > Help! I'm trying to make multiple plots in a web app and old plots seem to > stick around and show up on new plots!??! > > Is there someway to "erase the canvas" or avoid this happening? > > Sound familiar? > > growth function below is the first plot that is ok. > management function below is the one that has growth plot in it. > > Chris > > ===================================================================== > > import matplotlib > matplotlib.use("Agg") > import pylab > > BACKGROUND_COLOR = "#ffffff" > > def growth(company): > """ > Plots Growth plot. > """ > > # Generates figure_, plot_ and functions. > > figure_ = pylab.figure() > plot_ = pylab.subplot(111, axisbg=BACKGROUND_COLOR) > years_plus_5 = company.years + range(max(company.years) + 1, > max(company.years) + 6) > five_percent = [1.05 ** (y - min(company.years)) > for y in years_plus_5] > ten_percent = [1.10 ** (y - min(company.years)) > for y in years_plus_5] > fifteen_percent = [1.15 ** (y - min(company.years)) > for y in years_plus_5] > twenty_percent = [1.20 ** (y - min(company.years)) > for y in years_plus_5] > twenty_five_percent = [1.25 ** (y - min(company.years)) > for y in years_plus_5] > thirty_percent = [1.30 ** (y - min(company.years)) > for y in years_plus_5] > scaled_sales = [50.0 * e / company.sales[-1] > for e in company.sales] > scaled_earnings = [30.0 * e / company.earnings[-1] > for e in company.earnings] > scaled_pretax_profit = [10.0 * e / company.pretax_profit[-1] > for e in company.pretax_profit] > scaled_low_price = [100.0 * e / company.high_price[-1] > for e in company.low_price] > scaled_high_price = [100.0 * e / company.high_price[-1] > for e in company.high_price] > functions = plot_.semilogy(company.years, scaled_sales, > company.years, scaled_earnings, > company.years, scaled_pretax_profit, > years_plus_5, five_percent, > years_plus_5, ten_percent, > years_plus_5, fifteen_percent, > years_plus_5, twenty_percent, > years_plus_5, twenty_five_percent, > years_plus_5, thirty_percent) > > # Adds price bars and sets their thickness. > > offset = 0.12 > for i, y in enumerate(company.years): > plot_.semilogy((y, y), > (scaled_low_price[i], scaled_high_price[i]), > linewidth="2.2", color = "black", zorder = 1) > plot_.semilogy((y - offset, y + offset), > (scaled_low_price[i], scaled_low_price[i]), > linewidth="2.2", color = "black", zorder = 1) > plot_.semilogy((y - offset, y + offset), > (scaled_high_price[i], scaled_high_price[i]), > linewidth="2.2", color = "black", zorder = 1) > > # Adds sales, earnings and pretax_profit points. > > points = [] > points.append(pylab.scatter(company.years, scaled_sales, 200, > c = BACKGROUND_COLOR)) > points.append(pylab.scatter(company.years, scaled_earnings, 200, > c = BACKGROUND_COLOR)) > points.append(pylab.scatter(company.years, scaled_pretax_profit, 200, > c = BACKGROUND_COLOR)) > > # Configures points. > > pylab.setp(points[0], linewidth = "1.3", edgecolor = "g", zorder = 12) > pylab.setp(points[1], linewidth = "1.3", edgecolor = "b", zorder = 11) > pylab.setp(points[2], linewidth = "1.3", edgecolor = "r", zorder = 10) > > # Configures earnings, sales and pretax_profit. > > pylab.setp(functions[0], linewidth = "3.0", color = "g", zorder = 9) > pylab.setp(functions[1], linewidth = "3.0", color = "b", zorder = 8) > pylab.setp(functions[2], linewidth = "3.0", color = "r", zorder = 7) > > # Configures percentage growth. > > for f in functions[-6:]: > pylab.setp(f, linewidth = "0.5", color = "k", zorder = 5) > > # Configures grid. > > plot_.grid(True) > grid_ = plot_.get_xgridlines() + plot_.get_ygridlines() > pylab.setp(grid_, linestyle = "-", color = "k", linewidth = "0.5", > zorder = 5) > plot_.set_axisbelow(True) > > # Sets view range for both axes. > > pylab.axis([min(company.years), max(company.years) + 5, 1, 200]) > > # Specifies tick values, color, size and boldness. > > x_tick_values = years_plus_5 > x_tick_labels = len(x_tick_values) * [""] > for i in range(1, len(x_tick_values), 2): > x_tick_labels[i] = str(x_tick_values[i]) > pylab.xticks(x_tick_values, x_tick_labels, > color = "k", fontsize = 15, fontweight = "bold") > y_tick_values = range(1, 11, 1) + range(10, 110, 10) + [200] > y_tick_labels = len(y_tick_values) * [""] > for e in [1, 5, 10, 50, 100, 200]: > y_tick_labels[y_tick_values.index(e)] = str(e) > pylab.yticks(y_tick_values, y_tick_labels, > color = "k", fontsize = 15, fontweight = "bold") > > # Adds labels for percentage growth lines. > > pylab.text(max(years_plus_5), 2.0, " 5%", fontsize = 15) > pylab.text(max(years_plus_5), 3.8, " 10%", fontsize = 15) > pylab.text(max(years_plus_5), 7.0, " 15%", fontsize = 15) > pylab.text(max(years_plus_5), 13.0, " 20%", fontsize = 15) > pylab.text(max(years_plus_5), 23.0, " 25%", fontsize = 15) > pylab.text(max(years_plus_5), 40.0, " 30%", fontsize = 15) > > # Adds labels for earnings, sales and pretax profit points. > > for c in zip(company.years, scaled_sales): > pylab.text(c[0], c[1], "S", > horizontalalignment = 'center', > verticalalignment = 'center', > color = "g", > clip_on = True, > zorder = 12, > fontweight = "bold", > fontsize = 15) > for c in zip(company.years, scaled_earnings): > pylab.text(c[0], c[1], "E", > horizontalalignment = 'center', > verticalalignment = 'center', > color = "b", > clip_on = True, > zorder = 11, > fontweight = "bold", > fontsize = 15) > for c in zip(company.years, scaled_pretax_profit): > pylab.text(c[0], c[1], "P", > horizontalalignment = 'center', > verticalalignment = 'center', > color = "r", > clip_on = True, > zorder = 10, > fontweight = "bold", > fontsize = 15) > > # Sets background of figure to be transparent. > > figure_.figurePatch.set_alpha(0.0) > > # Creates a PNG file. > > pylab.savefig("gnustocks/static/images/growth_plot.png", dpi = (100)) > > def management(company): > figure_ = pylab.figure() > > t = pylab.arange(0.0, 2.0, 0.01) > import math > s = pylab.sin(2*math.pi*t) > pylab.plot(t, s, linewidth=1.0) > > pylab.xlabel('time (s)') > pylab.ylabel('voltage (mV)') > pylab.title('About as simple as it gets, folks') > pylab.grid(True) > pylab.savefig("gnustocks/static/images/management.png", dpi = (100)) > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |