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()
然后在 ZMI 中创建一个外部方法(例如 Id -> mplchart,模块名称 -> mpl,函数名称 -> chart)。
单击测试选项卡,您应该看到正弦曲线图。
部分作者:AndrewStraw、Unknown[106]、Unknown[107]