From: John H. <jdh...@ac...> - 2004-05-03 21:14:50
|
>>>>> "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() |