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

来源:互联网 发布:弗兰茨约瑟夫 知乎 编辑:程序博客网 时间:2024/04/30 15:52

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

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

from urllib2 import urlopenfrom reportlab.graphics.shapes import *from reportlab.graphics.charts.lineplots import LinePlotfrom reportlab.graphics.charts.textlabels import Labelfrom reportlab.graphics import renderPDFURL = '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 = 50lp.y = 50lp.height = 125lp.width = 300lp.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 urlopenURL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'w = urlopen(URL)

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

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




0 0
原创粉丝点击