-
2020-12-04 15:46:09
fromurllibimport urlopen
from reportlab.graphics.shapesimport *
from reportlab.graphics.charts.lineplotsimport LinePlot
from reportlab.graphics.charts.textlabelsimport Label
from reportlab.graphicsimport renderPDF
URL ='http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'
COMMENT_CHARS ='#:'
drawing = Drawing(400,200)
data =[]
for line in urlopen(URL).readlines():
ifnot line.isspace()andnot 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.0for row in data]
lp = LinePlot()
lp.x=50
lp.y=50
lp.height=125
lp.width=300
lp.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')
更多相关内容 -
python基础教程项目二之画幅好画
2020-09-20 16:21:20主要为大家详细介绍了python基础教程项目二之画幅好画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
项目2:画幅好画
2020-10-15 18:00:05首先要用到的是画折线类,PolyLine,用法很简单,看下面的例子: 1 from reportlab.lib import colors 2 from reportlab.graphics.shapes import* 3 from reportlab.graphics import renderPDF 4 5 drawing = ...这个项目比较简单,介绍了ReportLab的用法。
首先要用到的是画折线类,PolyLine,用法很简单,看下面的例子:
1 from reportlab.lib import colors
2 from reportlab.graphics.shapes import*
3 from reportlab.graphics import renderPDF
4
5 drawing = Drawing(200, 150)
6 drawing.add(PolyLine([(50, 50), (100, 50), (100, 100), (50, 100), (50, 50)]))
7
8 renderPDF.drawToFile(drawing, ‘report2.pdf’, ‘Sunsports’)1 from reportlab.lib import colors
2 from reportlab.graphics.shapes import*
3 from reportlab.graphics import renderPDF
4
5 data=[
6 # Year Month Predicted High Low
7 (2007, 8, 113.2, 114.2, 112.2),
8 (2007, 9, 112.8, 115.8, 109.8),
9 (2007, 10, 111.0, 116.0, 106.0),
10 (2007, 11, 109.8, 116.8, 102.8),
11 (2007, 12, 107.3, 115.3, 99.3),
12 (2008, 1, 105.2, 114.2, 96.2),
13 (2008, 2, 104.1, 114.1, 94.1),
14 (2008, 3, 99.9, 110.9, 88.9),
15 (2008, 4, 94.8, 106.8, 82.8),
16 (2008, 5, 91.2, 104.2, 78.2)
17 ]
18
19 drawing = Drawing(200, 150)
20
21 pred = [row[2]-40 for row in data]
22 high = [row[3]-40 for row in data]
23 low = [row[4]-40 for row in data]
24 times = [200*((row[0]+row[1]/12.0)-2007)-110 for row in data]
25
26 drawing.add(PolyLine(list(zip(times, pred)), strokeColor = colors.blue))
27 drawing.add(PolyLine(list(zip(times, high)), strokeColor = colors.red))
28 drawing.add(PolyLine(list(zip(times, low)), strokeColor = colors.green))
29 drawing.add(String(65, 115, ‘Sunspots’, fontSize=18, fillColor = colors.red))
30
31 renderPDF.drawToFile(drawing, ‘report1.pdf’, ‘Sunsports’)这儿需要注意的一点是书上的写法是:
PolyLine(zip(times, pred), strokeColor = colors.blue)
但是在python3中这样写是错误的,会有 TypeError: object of type ‘zip’ has no len() 错误。可以改写成上述写法。接下来是进阶版本,不难:
1 from urllib.request import urlopen #python3中在request中
2 from reportlab.graphics.shapes import *
3 from reportlab.graphics.charts.lineplots import LinePlot
4 from reportlab.graphics.charts.textlabels import Label
5 from reportlab.graphics import renderPDF
6
7 URL = ‘http://services.swpc.noaa.gov/text/predicted-sunspot-radio-flux.txt’
8 COMMENT_CHARS = ‘#:’
9
10 drawing = Drawing(400, 200)
11 data = []
12
13 for line in urlopen(URL).readlines():
14 line = line.decode() #这儿需要这样做,否则下面无法转化成float,具体不太清楚。。。
15 if not line.isspace() and not line[0] in COMMENT_CHARS:
16 data.append([float(n) for n in line.split()])
17
18 pred = [row[2] for row in data]
19 high = [row[3] for row in data]
20 low = [row[4] for row in data]
21 times = [row[0] + row[1]/12.0 for row in data]
22
23 lp = LinePlot()
24 lp.x = 50
25 lp.y = 50
26 lp.height = 120
27 lp.width = 300
28
29 lp.data =[tuple(zip(times, pred)), tuple(zip(times, high)), tuple(zip(times, low))] #这儿最后也要转换成元组
30
31 lp.lines[0].strokeColor = colors.red
32 lp.lines[1].strokeColor = colors.blue
33 lp.lines[2].strokeColor = colors.green
34
35 drawing.add(lp)
36 drawing.add(String(250, 150, ‘Sunspots’, fontSize =14, fillColor = colors.red))
37
38 renderPDF.drawToFile(drawing, ‘report2.pdf’, ‘Sunspots’)转载于:https://www.cnblogs.com/zyb993963526/p/8297357.html
-
画幅好画python
2018-04-26 22:10:45# -*- coding: utf-8 -*-"""Created on Sat Nov 25 21:59:04 2017@author: Administrator"""from urllib import urlopenfrom reportlab.graphics.shapes import *from reportlab....
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 25 21:59:04 2017@author: Administrator
"""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 renderPDFURL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.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 = 50
lp.y = 50
lp.height = 125
lp.width = 300
lp.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.greendrawing.add(lp)
drawing.add(String(250,150, 'Sunspots',fontSize=14,fillColor=colors.red))renderPDF.drawToFile(drawing, 'report3.pdf','Sunspots')
-
python十个项目之----画幅好画
2021-01-30 06:03:39本次是用python创建图形,具体是利用图形创建PDF文件,使得文件...因为urllib2.urlopen里面有一个timeout可以设置,因为当我用检测程序时候好几次都是强制关闭的终端要是设置了 timeout那么就好多了。所以我用了urllib2本次是用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
-
Python 练习之画幅好画
2018-03-21 13:03:13《python基础教程》画幅好画使用reportlab模块画出太阳黑子的曲线图。源代码:from reportlab.lib import colors from urllib import urlopen from reportlab.graphics.shapes import * from reportlab.... -
画幅好画
2014-03-10 10:28:57画幅好画这个项目来源于《Python基础编程》后面的第二个项目,介绍如何在Python中创建图形创建一个pdf文件,是从文本文件中读取的数据可视化。 重要工具的介绍: 在这个项目中最重要的工具是图形生成包ReportLab ... -
python项目练习:画幅好画
2019-02-22 22:10:43这是《python基础教程》中的第二个项目,关于python操作PDF 涉及到的知识点 1、urllib的使用 2、reportlab库的使用 这个例子着实很简单,不过我发现在python里面可以直接在数组[]里面写for循环,真是越用越方便。... -
Python项目之画幅好画
2016-05-24 14:05:54这个项目是《Python基础教程》后面的项目之一。这个项目主要是用来学习如何在Python中创建图形,具体说就是利用图形创建一个PDF文件,使从文本中读取的数据可视化。... 初步版本: 实现了基本内容。 -
#python项目练习二:画幅好画
2020-12-04 15:46:04#python操作PDFfrom urllib import urlopenfrom reportlab.graphics.shapes import *from reportlab.graphics.charts.legends import *from reportlab.graphics.charts.textlabels import *from reportlab.graphics ... -
python基础教程总结15——2 画幅好画
2020-12-04 15:46:13标签:要求:从Internet上下载数据文件; 分析数据文件并提取感兴趣的部分工具:图形生成包(ReportLab,PYX等)数据:太阳黑子和射电辐射... 简单实现1.1 用ReportLab画图将字符串“Hello world”画在一个100*100像素... -
python基础教程里的项目2:画幅好画
2017-02-20 16:10:22本项目介绍如何在python中创建图形,利用图形创建一个pdf文件,将文本文件数据可视化。 程序要求满足:1、从网上下载数据。2、分析数据并提取感兴趣的部分。3、根据数据生成PDF文件。 本文用到的工具包是... -
Python项目二:画幅好画
2015-07-04 14:59:45本项目使用reportlab实现基础的画图操作,画图数据从网上获取,分析后画出曲线,并保存到PDF文件中。 由于网上的黑子数据与书中所说的不一样,所以略作修改,获取一个网页,然后统计这个网页上数字,小写字母,大写... -
python学习(一):画幅好画
2015-03-17 22:59:30欢迎使用Markdown编辑器写博客准备工作: 1.python34+sublime 2.准备太阳黑子数据predict.txt 3.安装tomcat,并将predict.txt置于根目录下sunspots_roto.py#第一行就与python2不同 #原文:from urllib import ... -
第21章 项目2:画幅好画
2019-09-23 09:30:16# 使用shapes可以画出复杂的形状 from reportlab.graphics.charts.lineplots import LinePlot # chars包里包含许多常用的图形 from reportlab.graphics.charts.textlabels import Label from reportlab.... -
python练习二—画幅好画
2018-02-28 09:04:42这个练习相对简单,主要是对reportlab库的学习调用,看代码 #! /usr/bin/env pyton # -*- coding=utf-8 -*- ...from reportlab.lib import colors ...from reportlab.graphics.shapes import * ... -
python基础教程项目2:画幅好画
2012-06-17 17:10:16第二个项目相比第一个简单了很多。 这个项目的目的是从网络上读取数据,将数据转化为图表显示在PDF中。 基本的思路是: 1.用urlopen从网络上读取数据,形成一个二维List ...2.拆分二维List,将数据列和时间列用zip... -
python基础教程:画幅好画
2011-09-22 22:59:13from urllib import urlopen from reportlab.graphics.shapes import * from reportlab.graphics.charts.lineplots import LinePlot from reportla -
《简简单单画幅画》教学设计
2021-07-10 07:31:22《简简单单画幅画》教学设计一、教材分析本节内容是人民教育出版社三年级信息技术上册第8课,简简单单画幅画的加深巩固实践课,让学生学习在本节课中能独立完成一幅作品,从而提高学生学习电脑绘画兴趣和信心。...