[Zope] zope and pychart

Small Business Services toolkit at magma.ca
Wed Mar 31 06:58:17 EST 2004


From: "Stephen Rudd" <stephen.rudd at btk.utu.fi>
> Please excuse another dumb question. I wish to produce some dynamic
> graphs inside Zope to display biological data. I am using pychart, this
> is clean and IMO has the best looking output for least amount of effort.
> I can produce graphics by writing a .png file to disk, and then reading
> it back to return to the client as RESPONSE. This is not optimal - why
> do I bother writing something to disk, to read it again to delete it?
>
> I have had a play using cStringIO, but cannot make this work. Does
> anyone have any pointers or examples of how I can create graphics in
> PyChart and display them using Zope without needing to write binary
> intermediates to the filesystem?

I use cStringIO, but with a graphics package called 'gdchart'. Here are a
few relevant code bits:

>From the calling routine (a dtml method):

    <dtml-let  agraph="graphics(graphtype)">
        ... do something with 'agraph'


The external method ('graphics.py'):

import gdchart
import cStringIO  # optional
from chart import Chart

class TestChart(Chart):
            def __init__(self):
                Chart.__init__(self)

            def draw(self, style, size, file, labels, *data):
                Chart.draw(self)
                args = (style, size, file, labels) + data
                apply(gdchart.chart, args)

def graphics(gtype):
        c = TestChart()
        rfile = cStringIO.StringIO()
        c.draw(gdchart.GDC_BAR, size, rfile, days, datalist)
        return rfile


HTH

Jonathan








More information about the Zope mailing list