reportlab是一个用python语言写的图形生成包。
2. 安装
环境:
win7 64bit
cygwin 64bit
gcc 4.8.3
python 2.7
pip 1.5.6
reportlab 3.1.8
pillow 2.6.1
事先,请在cygwin里安装好gcc,如果没有gcc,安装reportlab会报错。
然后使用pip安装reportlab
pip install reportlab
如果pillow事先没有安装的话,reportlab会自动下载安装pillow(Python Imaging Library)。
3. 一个例子
我们来绘制一幅太阳黑子的折线图。
以下代码出自《Python基础教程(第二版)》,我稍微修改了一些地方。
代码的功能是输出一个PDF文件,里面绘制了太阳黑子的历史数据。
from urllib import urlopen from reportlab.graphics.shapes import * from reportlab.graphics.charts.lineplots import LinePlot from reportlab.graphics.charts.textlabels import Label from reportlab.graphics import renderPDF URL = 'http://www.swpc.noaa.gov/ftpdir/weekly/RecentIndices.txt' COMMENT_CHARS = '#:' drawing = Drawing(400, 200) data = [] for line in urlopen(URL).readlines(): if not line.isspace() and not line[0] in COMMENT_CHARS: data.append([float(n) for n in line.split()]) swo = [row[2] for row in data] ri = [row[3] for row in data] times = [row[0] + row[1]/12.0 for row in data] lp = LinePlot() lp.x = 50 lp.y = 50 lp.height = 125 lp.width = 300 lp.data = [zip(times, swo), zip(times, ri)] lp.lines[0].strokeColor = colors.blue lp.lines[1].strokeColor = colors.red drawing.add(lp) drawing.add(String(250, 150, 'Sunspots', fontSize=14, fillColor=colors.red)) renderPDF.drawToFile(drawing, 'report2.pdf', 'Sunspots')
一些百科知识:
太阳黑子(sunspot),活动周期为11.2年。
SWO: SWPC Space Weather Operations.
RI: S.I.D.C. Brussels International Sunspot Number.
效果如图