Matplotlib:matplotlib 和 zope

日期2006-12-04(最后修改),2006-01-22(创建)

0. 先决条件: 您 需要 安装 以下 内容 才能 成功 运行 此 示例: Zope、 Matplotlib (在 Zope 的 Python 之上)、 Python 图像 库 (PIL)。 还有一点 - 可能 每个人 都 这样做 了, 但 以防万一 - zope 实例 主目录 必须 可写, 才能 使 以下 内容 正常工作。

1. 在 INSTANCEHOME\Extensions 中 创建一个 文件 (例如 mpl.py)

In [ ]
import matplotlib
matplotlib.use('Agg')
from pylab import *
from os import *
from StringIO import StringIO
from PIL import Image as PILImage
from matplotlib.backends.backend_agg import FigureCanvasAgg
def chart(self):
    clf()
    img_dpi=72
    width=400
    height=300
    fig=figure(dpi=img_dpi, figsize=(width/img_dpi, height/img_dpi))
    x=arange(0, 2*pi+0.1, 0.1)
    sine=plot(x, sin(x))
    legend(sine, "y=sin x", "upper right")
    xlabel('x')
    ylabel('y=sin x')
    grid(True)
    canvas = FigureCanvasAgg(fig)
    canvas.draw()
    size = (int(canvas.figure.get_figwidth())*img_dpi, int(canvas.figure.get_figheight())*img_dpi)
    buf=canvas.tostring_rgb()
    im=PILImage.fromstring('RGB', size, buf, 'raw', 'RGB', 0, 1)
    imgdata=StringIO()
    im.save(imgdata, 'PNG')
    self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache')
    self.REQUEST.RESPONSE.setHeader('Content-Type', 'image/png')
    return imgdata.getvalue()
  1. 然后在 ZMI 中创建一个外部方法(例如 Id -> mplchart,模块名称 -> mpl,函数名称 -> chart)。

  2. 单击测试选项卡,您应该看到正弦曲线图。

部分作者:AndrewStraw、Unknown[106]、Unknown[107]