小白在看了很多Python教程之后,覺得是時(shí)候做點(diǎn)什么小項(xiàng)目來練練書了
于是東找西找,找到了一個(gè)結(jié)合爬蟲的繪圖的小項(xiàng)目淳梦,雖然是小項(xiàng)目,但是畢竟我是個(gè)小白啊遂蛀,所以還是踩了坑谭跨,調(diào)了bug
代碼如下:
from urllib import urlopen? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
??#urllib 是一個(gè)爬蟲的庫
from reportlab.graphics.shapes import *? ? ? ? ? ??
#reportlab是一個(gè)繪圖的庫
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'?
?#網(wǎng)址是一個(gè)預(yù)測氣溫的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]??
?#主要包括四個(gè)維度的數(shù)據(jù)干厚,預(yù)測值李滴,最高值、最低值蛮瞄、時(shí)間
lp = LinePlot()
lp.x = 50
lp.y = 50
lp.height = 125
lp.width = 300
#設(shè)置圖的一些關(guān)于長所坯、寬、高的屬性
lp.data = [zip(times, pred),zip(times,high),zip(times, low)]
#這里用zip 函數(shù)將時(shí)間分別于預(yù)測值挂捅、最高值芹助、最低值組合起來
lp.lines[0].strokeColor = colors.blue
lp.lines[1].strokeColor = colors.red
lp.lines[2].strokeColor = colors.green
#分別用藍(lán)色、紅色闲先、綠色表示預(yù)測值状土、最高值、最低值
drawing.add(lp)
drawing.add(String(250,150, 'Sunspots',fontSize=14,fillColor=colors.red))
#在250,150 的位置顯示一個(gè)字號為14伺糠,顏色為紅色的蒙谓,Sunspots
renderPDF.drawToFile(drawing, 'report3.pdf','Sunspots')
#將畫好的圖片保存為PDF,存在代碼的相同目錄下
在完成這段代碼的過程中踩的坑有:
1.reportlab庫沒有安裝训桶,no moudle for?reportlab
解決方案:在anacoda 命令行里輸入pip install?reportlab 累驮,聯(lián)網(wǎng)之后即可安裝完成
2.找到的代碼酣倾,原來的網(wǎng)址顯示404
解決方案:404下面告訴我們網(wǎng)站地址修改了,在百度里又找到了新的網(wǎng)址谤专,在網(wǎng)址里又找到了新的數(shù)據(jù)躁锡,新的txt,但是新的txt里數(shù)據(jù)的維數(shù)不對置侍,月份是用英文表示的映之,又提示不能由字符轉(zhuǎn)換float,又重新找了一個(gè)txt,數(shù)據(jù)終于對的上了蜡坊,于是終于可以看到圖片了惕医,好欣慰。
這個(gè)故事告訴我們:菜鳥也可以改一下代碼算色,做出來點(diǎn)東西的抬伺,繼續(xù)加油!灾梦!