From: Engelsma, D. <D.E...@La...> - 2004-05-04 19:54:14
|
John -- Thanks for the help! Your example cleared up a lot of problems. I'll send you a screen dump of what I'm doing when it's ready. Dave Engelsma Lacks Wheel Trim Systems > -----Original Message----- > From: John Hunter [mailto:jdh...@ac...] > Sent: Monday, May 03, 2004 4:52 PM > To: Engelsma, Dave > Cc: mat...@li... > Subject: Re: [Matplotlib-users] wxList and FigureCanvasWx > > >>>>> "John" == John Hunter <jdh...@ac...> writes: > > John> The example is included below. I'll add it to the examples > John> dir for people who want to work directly with the Agg canvas > John> and renderer. > > oops, left out a critical line - adding the axes to the figure. > > Here is a modified example, which also demonstrates initializing a > Numeric array from the string and passing the image off to PIL.... > > > """ > This is an example that shows you how to work directly with the agg > figure canvas to create a figure using the pythonic API. > > In this example, the contents of the agg canvas are extracted to a > string, which can in turn be passed off to PIL or put in a numeric > array > > > """ > #!/usr/bin/env python > from matplotlib.backends.backend_agg import FigureCanvasAgg > from matplotlib.figure import Figure > from matplotlib.axes import Subplot > from matplotlib.mlab import normpdf > from matplotlib.numerix import randn > > fig = Figure(figsize=(5,4), dpi=100) > ax = Subplot(fig, 111) > fig.add_axis(ax) > canvas = FigureCanvasAgg(fig) > > mu, sigma = 100, 15 > x = mu + sigma*randn(10000) > > # the histogram of the data > n, bins, patches = ax.hist(x, 50, normed=1) > > # add a 'best fit' line > y = normpdf( bins, mu, sigma) > line, = ax.plot(bins, y, 'r--') > line.set_linewidth(1) > > ax.set_xlabel('Smarts') > ax.set_ylabel('Probability') > ax.set_title(r'$\rm{Histogram of IQ: }\mu=100, \sigma=15$') > > ax.set_xlim( (40, 160)) > ax.set_ylim( (0, 0.03)) > > canvas.draw() > > s = canvas.tostring_rgb() # save this and convert to bitmap as needed > > # get the figure dimensions for creating bitmaps or numeric arrays, > # etc. > l,b,w,h = fig.bbox.get_bounds() > w, h = int(w), int(h) > > if 0: > # convert to a Numeric array > X = fromstring(s, UInt8) > X.shape = h, w, 3 > > if 0: > # pass off to PIL > import Image > im = Image.fromstring( "RGB", (w,h), s) > im.show() > |