Try putting
pylab.close()
after each pylab.savefig()
Eric
[EMAIL PROTECTED] 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users