美文网首页
用python画一幅好画

用python画一幅好画

作者: Dozing | 来源:发表于2017-05-07 15:43 被阅读672次

<Python基础教程>里面的项目.用Python的包来进行数据可视化.下面的代码是PDF画图的原外型.

from reportlab.lib import colors  
from reportlab.graphics.shapes import *  
from reportlab.graphics import renderPDF  
  
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 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') 

下面的几段数据处理是为了使图像可以出现在绘图区域内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] 

下面就是程序运行的结果


程序运行结果

最终的太阳黑子程序:

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 renderPDF  
  
URL = '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 = 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, 'report2.pdf','Sunspots') 

运行结果:

最终程序运行结果

上面的代码有两个函数(发方法)需要主要
1.Python isspace() 方法检测字符串是否只由空格组成。
2.Python split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串

相关文章

  • 用python画一幅好画

    <Python基础教程>里面的项目.用Python的包来进行数据可视化.下面的代码是PDF画图的原外型. 下面的几...

  • 铁塔🗼

    手绘帮打卡 埃菲尔铁塔 没有时间好好画 等我的平板到了 画一天时间画一幅精美大作~

  • 龟背竹

    用软件画一幅。

  • 针管笔线描习作(第二十四-二十五幅)

    临三幅不同风格的线描牡丹 更喜欢哪一幅呢?就自己来看,还是喜欢吉瑞森作品。第二幅线条不是很碎所以好画一些,第三幅简...

  • 画下一支朱顶红

    这个七月,一直都在焦虑中。也没有更多的心思静下来好好画一幅画。

  • 咏梅

    闲玩用软件画一幅

  • 用python画一幅字符画

    【作者 0han 本篇代码来源于实验楼shiyanlou.com】 这一篇没有太多介绍原理 因为是在学习pytho...

  • 波涛汹涌的大海

    一直想好好画一幅大海水彩画,今天才完成。天空云朵不满意,不够自然,总是画不好云朵。 先画用湿画法画天空,再画大海和...

  • ▼墨色玫瑰

    心情不好画一张

  • 【若鱼自学国画】03写意山水:云岩观瀑

    山水画中,有植物,有山石、有房屋、有人物;画一幅山水画前,要先思考好画面的构图,一幅有意思的构图,也会为画面增彩。...

网友评论

      本文标题:用python画一幅好画

      本文链接:https://www.haomeiwen.com/subject/tavutxtx.html