python学习(一):画幅好画

准备工作:
1.python34+sublime
2.准备太阳黑子数据predict.txt
3.安装tomcat,并将predict.txt置于根目录下

sunspots_roto.py

#第一行就与python2不同
#原文:from urllib import urlopen
from urllib.request 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



#http://localhost:8080/predict.txt
URL = 'http://localhost:8080/predict.txt'
#原文:COMMENT_CHARS = '#:',txt数据中没有:,因此不加也行的
COMMENT_CHARS = '#'

drawing=Drawing(400,200)
data = []

for line in urlopen(URL).readlines():
    #原文:not line[0] in COMMENT_CHARS;
    #不使用decode的话,line的类型为<class 'bytes'>,
    #错误提示:TypeError: 'str' does not support the buffer interface
    line = line.decode()

    if not line.isspace() and not line[0] in COMMENT_CHARS:
        data.append([float(n) for  n in line.split()])

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 = [row[0] + row[1]/12 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)],
#不使用tuple转换会报错,
#错误提示:TypeError: object of type 'zip' has no len()
la =tuple(zip(times,pred))
lb =tuple(zip(times,high))
lc = tuple(zip(times,low))
lp.data =[la,lb,lc]

lp.lines[0].strokeColor= colors.red 
lp.lines[1].strokeColor= colors.blue 
lp.lines[2].strokeColor= colors.green 

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

renderPDF.drawToFile(drawing,'report2.pdf','ssss')

运行效果:
这里写图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值