python项目画幅好画_python基础教程总结15——2 画幅好画

标签:

要求:从Internet上下载数据文件;  分析数据文件并提取感兴趣的部分

工具:图形生成包(ReportLab,PYX等)

数据:太阳黑子和射电辐射流量(http://services.swpc.noaa.gov/text/predicted-sunspot-radio-flux.txt)

1. 简单实现

1.1 用ReportLab画图

将字符串“Hello world”画在一个100*100像素的大小的PDF图形中间:创建一个给定大小的图纸(drawing);然后创建带有某些属性的图形元素,本例是一个string对象;接着将元素添加到图纸中去;最后将图纸生成为PDF格式并保存。

fromreportlab.graphics.shapes import Drawing ,Stringfromreportlab.graphics import renderPDF

d=Drawing(100,100)

s=String(50,50,‘Hello,world!‘,textAnchor=‘middle‘)

d.add(s)

renderPDF.drawToFile(d,‘hello.pdf‘,‘A simple PDF file‘)

1.2 原型

from reportlab.lib importcolorsfrom reportlab.graphics.shapes import*

from reportlab.graphics importrenderPDF

data=[#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 indata]

high=[row[3]-40 for row indata]

low=[row[4]-40 for row indata]

times=[200*((row[0]+row[1]/12.0)-2007)-110 for row indata]#PolyLine画折线

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‘,fontSize=18,fillColor=colors.red))

renderPDF.drawToFile(drawing,‘report1.pdf‘,‘Sunsports‘)

2. 再次实现

1)获取数据

使用标准模块urllib可以从Internet获取文件。模块中的urlopen函数类似于open函数,参数是一个URL而不是文件名。打开阅读文件时,需要过滤掉不需要的内容。文件包含空行以及每行都以一些特殊的字符开始(#和:),应该忽略。

#URL保存在变量URL中,变量COMMENT_CHARS设定为字符串‘#:‘

data=[]for line inurlopen(URL).readlines():if not line.isspace() and not line[0] inCOMMENT_CHARS:

data.append([float(n)for n in line.split() ])

2)使用LinePlot类

LinePlot类的实例化不需要任何参数,然后在将它添加到Drawing前设置特性:想,一,height,width以及data(元组列表)

3)最终程序:

from urllib importurlopenfrom reportlab.graphics.shapes import *

from reportlab.graphics.charts.lineplots importLinePlotfrom reportlab.graphics.charts.textlabels importLabelfrom reportlab.graphics importrenderPDF

URL= ‘http://services.swpc.noaa.gov/text/predicted-sunspot-radio-flux.txt‘COMMENT_CHARS= ‘#:‘drawing= Drawing(400, 200)

data=[]for line inurlopen(URL).readlines():if not line.isspace() and not line[0] inCOMMENT_CHARS:

data.append([float(n)for n inline.split()])

pred= [row[2] for row indata]

high= [row[3] for row indata]

low= [row[4] for row indata]

times= [row[0] + row[1]/12.0 for row indata]

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.blue

lp.lines[1].strokeColor =colors.red

lp.lines[2].strokeColor =colors.green

drawing.add(lp)

drawing.add(String(250,150, ‘Sunspots‘,fontSize=14,fillColor=colors.red))

renderPDF.drawToFile(drawing,‘report3.pdf‘,‘Sunspots‘)

标签:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

耐能团队论文登上《自然·电子学》:集成忆阻器与CMOS以实现更好的AI

《自然电子学》杂志封面(资料图,来源:《自然》官网)来源:Kneron耐能近日,《自然》杂志子刊《自然电子学》(Nature Electronics)发表论文《集成忆阻器与CMOS以实现更好的AI》&#xf…

出发

在五点闹铃响的那一刻,小美醒了,叫醒还在熟睡的我,看着窗外已经透亮。快速洗漱,跟小美拥抱,妈妈也起床,“高兴去,平安归”带着每次出门时妈妈的祝福走出家门,坐上昨晚小美预订的滴滴…

word交叉引用多条文献

有时候需要引用多条连续的文献,例如[1][2][3]需要把它变为[1-3],更新域后不受影响仍然正确。 4、选中这两个代码域,右键->切换域代码,再选中这两个代码域,右键->更新域,引用号码变为[13],…

pppcloud云主机内LINUX用户安全管理2

◆超级用户权限与授权 ●建立多个超级用户 不少新系统管理员认为root用户是唯一的超级用户,其实root只是系统默认的超级用户的名称,root并非因为它叫root而成为超级用户的。随便打开一个/etc/passwd文件的例子,你就会发现如下几行&#xff1a…

一份完全解读:是什么使神经网络变成图神经网络?

图1:来自(Bruna等人,ICLR,2014)的图,描绘了3D领域内的MNIST图像。虽然卷积网络很难对球面数据进行分类,但是图网络可以很自然地处理它。可以把它当做是一个处理工具,但在实际应用程序中会出现许多类似的任务…

linux的exec函数

在用fork函数创建子进程后,子进程往往要调用一个exec函数以执行另一个程序 当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程I D并未改变。exec只是…

python中get函数作用_python get函数有什么作用?示例解析

这篇文章之中我们来了解一下关于python字典之中的pythonget函数的相关知识,get函数是什么意思,他有什么作用都将会在接下来的文章之中得到解答。描述Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。语法get(…

C++vector的reserve和resize比原来的容量小

vector的resize()函数的作用是改变vector元素个数 reverse()函数的作用是改变容量 如果v.reserve(n)函数的n的大小比vector原来的容量小。容量没有变化。size也没有变: 如果v.resize(n)函数的n比vector原来的size小,结果是size…

sql server 游标的使用方法

数据库游标:是面向行来取数据集合的标识,可以很好的弥补面向表或数据集合阅读数据的不便之处;游标的内存消耗也很大,所以使用有标签还要衡量是否值得使用游标标识。 游标举例: declare test_cursor cursor --定义游标…

中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】

来源: 智东西RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学伯克利…

sha256校验工具_使用AIDE工具做入侵检测

AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档。AIDE数据库能够保存文档的各种属性,包括:权…

transition过渡的趣玩

本例中将三张图&#xff08;来自网络&#xff09;进行堆叠&#xff0c;鼠标悬停触发。附有源代码 <!DOCTYPE html> <html> <head><title>照片墙</title><meta charset"utf-8"><style type"text/css">.parent{wi…

内存管理之段错误

当程序试图访问不允许访问的内存位置&#xff0c;或试图以不允许的方式访问内存位置时会发生段错误。 几种常见的段错误&#xff1a; 使用野指针 试图修改字符串常量的内容 数组越界 堆栈溢出

网上花店系统源码_如何创建一个花店线上商城,可以开发一个微信小程序

说起来花店&#xff0c;相信很多人都去花店买过花&#xff0c;许多花店通常都是个人开的店&#xff0c;一般位置回去选取在人口稠密的地区&#xff0c;以求争取到附近的流量。一般来说&#xff0c;人们会在有人创业或做些开心的事&#xff0c;或者情人节时买鲜花。随着城市的不…

机器的类比

来源&#xff1a;人机与认知实验室如果说机器深度学习有几个重要的边界&#xff1a;数据边界、语义边界、符号边界和因果边界。那么突破这几个边界的口子可能就是——类比&#xff0c;不仅是比例类比&#xff0c;更是跨域机器类比机理的形成可能就是一条前进的光明大道。实质上…

ligerDialog的使用

1.通过ViewBag来传值。 if (ViewBag.ReturnMessage ! null) 2.脚本代码&#xff1a; 对话框设计与赋值问题。 <script type"text/javascript">$(function () {if (document.getElementById("dialog-BorrowInformation") ! null) {$.ligerDialog.open…

野指针和悬空指针

野指针就是没有被初始化过的指针&#xff1b; 悬空指针是指针最初指向的内存已经被释放了的一种指针

python求零点_python – 计算大序列的过零点的结果不同

这个问题源于查看this关于计算zero crossings数量的问题的答案.提供了几个解决问题的答案,但NumPyappproach在时间上摧毁了其他问题.问题&#xff1a;为什么NumPy解决方案提供的结果与其他三种解决方案不同&#xff1f; (哪个是正确的&#xff1f;)以下是计算过零次数的结果&am…

【深度】全球机器人产业趋势及特征分析

来源&#xff1a;工业机器人前沿当前&#xff0c;全球机器人市场规模持续扩大&#xff0c;工业机器人市场增速回落&#xff0c;服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入&#xff0c;产品在教育陪护、医疗康复、危险环境等领域的应用持续拓…

git commit --amend修改git commit提交的message

当git commit -m "message"提交之后&#xff0c;在push之前&#xff0c;发现git commit中的message有误&#xff0c;想把提交的message改过来&#xff0c;有什么办法&#xff1f; 首先输入git commit --amend命令&#xff0c;此时会打开一个vim窗口&#xff0c;里面…