Python專案之畫幅好畫

2021-07-12 00:21:26 字數 2830 閱讀 2004

這個專案是《

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')

執行結果:

最終版本:

使用了標準模板urllib可以從網上獲取檔案,以及使用了lineplot類以使當發生變化時,為了讓內容處於正確的位置不必做專門的修改。

實現**:

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 = ''

comment_chars = '#:'

drawing = drawing(400, 200)

data =

for line in urlopen(url).readlines():

if not line.isspace() and not line[0] in comment_chars:

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')

執行結果:

python真是一門功能強大的語言,繼續探索它更多的奧秘吧。

python基礎教程專案二之畫幅好畫

這是 python基礎教程 中的第二個專案,關於python操作pdf。涉及到的知識點 1 urllib的使用 2 reportlab庫的使用 這個例子著實很簡單,不過我發現在python裡面可以直接在陣列 裡面寫for迴圈,真是越用越方便。下面是 from urllib import urlope...

python基礎教程 畫幅好畫

from urllib import urlopen from reportlab.graphics.shapes import from reportlab.graphics.charts.lineplots import lineplot from reportlab.graphics.char...

python學習(一) 畫幅好畫

準備工作 1.python34 sublime 2.準備太陽黑子資料predict.txt 3.安裝tomcat,並將predict.txt置於根目錄下 sunspots roto.py 第一行就與python2不同 原文 from urllib import urlopen 原文 comment ...