Hi, I like to add Graphs with matplotlib directly into my sites. I used a web2py slice to get an image into a variable: from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas from matplotlib.figure import Figure import cStringIO
def plot(title='title',xlab='x',ylab='y',mode='plot', data={'xxx':[(0,0),(1,1),(1,2),(3,3)], 'yyy':[(0,0,.2,.2),(2,1,0.2,0.2),(2,2,0.2,0.2),(3,3,0.2,0.3 )]}): fig=Figure() fig.set_facecolor('white') ax=fig.add_subplot(111) if title: ax.set_title(title) if xlab: ax.set_xlabel(xlab) if ylab: ax.set_ylabel(ylab) legend=[] keys=sorted(data) for key in keys: stream = data[key] (x,y)=([],[]) for point in stream: x.append(point[0]) y.append(point[1]) if mode=='plot': ell=ax.plot(x, y) legend.append((ell,key)) if mode=='hist': ell=ax.hist(y,20) #if legend: # ax.legend([x for (x,y) in legend], [y for (x,y) in legend], # 'upper right', shadow=True) canvas=FigureCanvas(fig) stream=cStringIO.StringIO() canvas.print_png(stream) return stream.getvalue() def pcolor2d(title='title',xlab='x',ylab='y', z=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]): fig=Figure() fig.set_facecolor('white') ax=fig.add_subplot(111) if title: ax.set_title(title) if xlab: ax.set_xlabel(xlab) if ylab: ax.set_ylabel(ylab) image=ax.imshow(z) image.set_interpolation('bilinear') canvas=FigureCanvas(fig) stream=cStringIO.StringIO() canvas.print_png(stream) return stream.getvalue() this is my controler: def Testimg(): plotimg=plot() return dict(plotimg=plotimg) and this is my view: {{extend 'layout.html'}} Some Content <table> {{=TR(TD(Test),TD('Value'))}} </table> {{=plotimg}} I managed to view the plot but I cant get it embedded into my page with some content above and below. And I get (probably) the binary png displayed as text -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.