python十个项目之----画幅好画

本次是用python创建图形,具体是利用图形创建PDF文件,使得文件中读数可视化。

首先安装reportlab包,然后import reportlab检测是否安装成功。下面进入正题

from urllib2 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/Predict.txt' COMMENT_CHARS = '#:' drawing = Drawing(400, 200) data = [] for line in urlopen(URL, ‘100’).readlines(): if not line.isspace() and not line[0] in COMMENT_CHARS: data.append([float(n) for n in line.split()] ) pred = [row[2] for row in data] high = [row[3] for row in data] low = [row[4] for row in data] time = [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(time, pred), zip(time, high), zip(time, low)] lp.lines[0].strokeColor = colors.blue lp.lines[1].strokeColor = colors.red lp.lines[2].strokeColor = colors.green drawing.add(lp) drawing.add(String(250, 150, 'Sunsplots', fontSize = 14, fillColor = colors.red)) renderPDF.drawToFile(drawing, 'report2.pdf', 'Sunspots')
其实这个程序本身是没有什么难度的,程序一目了然。所以就不说什么了,我想说说我的收获:

在我运行程序的时候发现运行了好久也没有生成PDF文档,所以我想可能是因为程序卡在了某个部分。据我分析我认为上面的程序可以分为三部分,一是获取数据(data[])

二是数据处理(pred,high,low,time),三是设置LinePlot类。所以我想只能是在获取数据方面花费了较多时间,所以我就如下程序检测了一下果然是我想的这样

检测程序如下:

from urllib2 import urlopen
URL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'
w = urlopen(URL)

我发现urllib2相对与urllib在使用urlopen方面要好。因为urllib2.urlopen里面有一个timeout可以设置,因为当我用检测程序时候好几次都是强制关闭的终端要是设置了

timeout那么就好多了。所以我用了urllib2




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值