Python项目之画幅好画
来源:互联网 发布:c语言中交换位置 编辑:程序博客网 时间:2024/04/30 14:09
这个项目是《Python基础教程》后面的项目之一。这个项目主要是用来学习如何在Python中创建图形,具体说就是利用图形创建一个PDF文件,使从文本中读取的数据可视化。要想实现,就得先下载图像生成包,可以在http://www.reportlab.org下载安装包,然后安装在Python所在路径中即可使用。
初步版本:
实现了基本内容。
实现代码:
from reportlab.lib import colorsfrom reportlab.graphics.shapes import *from reportlab.graphics import renderPDFdata = [ # Year Month Predicted High Low (2007, 8, 113.2, 114.2, 112.2), (2007, 9, 112.8, 115.8, 109.8), (2007, 10, 111.0, 116.0, 106.0), (2007, 11, 109.8, 116.8, 102.8), (2007, 12, 107.3, 115.3, 99.3), (2008, 1, 105.2, 114.2, 96.2), (2008, 2, 104.1, 114.1, 94.1), (2008, 3, 99.9, 110.9, 88.9), (2008, 4, 94.8, 106.8, 82.8), (2008, 5, 91.2, 104.2, 78.2), ] drawing = Drawing(200, 150)pred = [row[2]-40 for row in data]high = [row[3]-40 for row in data]low = [row[4]-40 for row in data]times = [200*((row[0] + row[1]/12.0) - 2007)-100 for row in data]drawing.add(PolyLine(zip(times, pred), strokeColor = colors.blue)) drawing.add(PolyLine(zip(times, high), strokeColor = colors.red)) drawing.add(PolyLine(zip(times, low), strokeColor = colors.green)) drawing.add(String(65, 115, 'Sunspots', fonSize = 18, fillColor = colors.red)) renderPDF.drawToFile(drawing, 'report1.pdf', 'Sunspots')
运行结果:
最终版本:
使用了标准模板urllib可以从网上获取文件,以及使用了LinePlot类以使当发生变化时,为了让内容处于正确的位置不必做专门的修改。
实现代码:
from urllib import urlopenfrom reportlab.graphics.shapes import *from reportlab.graphics.charts.lineplots import LinePlotfrom reportlab.graphics.charts.textlabels import Labelfrom reportlab.graphics import renderPDFURL = 'http://services.swpc.noaa.gov/text/predicted-sunspot-radio-flux.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()])pred = [row[2] for row in data]high = [row[3] for row in data]low = [row[4] for row in data]times = [row[0] + row[1]/12.0 for row in data]lp = LinePlot()lp.x = 50lp.y = 50lp.height = 125lp.width = 300lp.data = [zip(times, pred),zip(times,high),zip(times, low)]lp.lines[0].strokeColor = colors.bluelp.lines[1].strokeColor = colors.redlp.lines[2].strokeColor = colors.greendrawing.add(lp)drawing.add(String(250,150, 'Sunspots',fontSize=14,fillColor=colors.red))renderPDF.drawToFile(drawing, 'report2.pdf','Sunspots')
运行结果:
Python真是一门功能强大的语言,继续探索它更多的奥秘吧。
1 0
- python十个项目之----画幅好画
- Python项目之画幅好画
- python项目练习二:画幅好画
- python项目练习二:画幅好画
- Python项目二:画幅好画
- python项目练习二:画幅好画
- python基础教程:画幅好画
- python基础教程里的项目2:画幅好画
- python学习(一):画幅好画
- 画幅好画
- Python基础教程实践2,画幅好画(win7,64位系统)
- Python基础教程实践2,画幅好画(win7,64位系统)
- 摄影基础之【**相机画幅、人眼视角范围**】
- 我要用css画幅画(九) - Apple Logo
- 全画幅与半画幅
- 鱼眼照片拍摄之鱼眼镜头与单反相机画幅的选择
- Sublime是好编辑器之Python编译
- 相机画幅小节
- SDAU练习三1017
- HttpServletRequestWrapper Filter中装饰Request 解决全站编码问题!
- ECharts学习-柱状图
- Maven聚合与继承
- GitHub 排名前 100 的安卓、iOS项目简介
- Python项目之画幅好画
- 第八周 项目4-指向学生类的指针
- Java课程设计------俄罗斯方块(Tetris)
- Random 篇
- Matlab 画图字体,字号的设定,图片大小和比例
- Java JVM:内存溢出
- Codeforces 665E Beautiful Subarrays (01字典树)
- angular-服务
- 自定义弹窗(OC)