新四季網

python折線圖的繪製方法(python之折線圖繪製體驗)

2023-05-02 22:37:33 1

python折線圖的繪製方法? 上一篇「python之初體驗」中我們主要是實現了抓取csdn本人博客列表頁面的每一篇博客的閱讀數量和標題功能,後來就想我們是有了數量和title,可是我還想要是知道我的每篇閱讀數量和日期之間的關係就好了,以及每篇博客的閱讀趨勢,說到關係和趨勢可能再多的語言都顯得蒼白無力,所以圖表可能是最好的一種表現形式,今天要實現的功能就是在python中通過繪製折線圖來表明日期和閱讀數量的關係,我來為大家講解一下關於python折線圖的繪製方法?跟著小編一起來看一看吧!

python折線圖的繪製方法

上一篇「python之初體驗」中我們主要是實現了抓取csdn本人博客列表頁面的每一篇博客的閱讀數量和標題功能,後來就想我們是有了數量和title,可是我還想要是知道我的每篇閱讀數量和日期之間的關係就好了,以及每篇博客的閱讀趨勢,說到關係和趨勢可能再多的語言都顯得蒼白無力,所以圖表可能是最好的一種表現形式,今天要實現的功能就是在python中通過繪製折線圖來表明日期和閱讀數量的關係。

當然代碼是可以復用的,之前的爬取代碼我們直接拿過來用就好了,本質上是只需要將我們爬取的數據展示在折線圖上面就好了,python中畫圖常用的就是matplotlib了,當然這個屬於第三方模塊,需要安裝,如果不安裝直接導包是會失敗的,當然安裝就很簡單了,這裡就不多介紹了。下面是我們代碼的完整實例。

[python] view plain copy

#!usr/bin/python

# -*- coding: utf-8 -*-

'''''

使用python爬取csdn個人博客的訪問量,並用折線圖展示出來時間和閱讀數目的關係

'''

import urllib2

import re

from bs4 import BeautifulSoup;

#當前的博客列表頁號

from http import ResponseUtils

# 導入畫圖需要的庫

from pylab import *

page_num = 1

notLast = 1;

# account = str(raw_input('輸入csdn的登錄帳號:'))

account = 'submit66'

allTitleList = [];

allViewList = [];

while notLast:

#首頁地址

baseUrl = 'http://blog.csdn.net/' account

#連接頁號,組成爬取的頁面網址

myUrl = baseUrl '/article/list/' str(page_num)

#偽裝成瀏覽器訪問,直接訪問的話csdn會拒絕

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = {'User-Agent': user_agent}

#構造請求

req = urllib2.Request(myUrl, headers=headers);

#訪問頁面

myResponse = urllib2.urlopen(req)

myPage = ResponseUtils.OutResponse.getResponse(myResponse);

#在頁面中查找是否存在『尾頁』這一個標籤來判斷是否為最後一頁,如果沒有則代表是最後一頁了

pattern = re.compile('尾頁');

notLast = pattern.findall(myPage, re.S);

soup = BeautifulSoup(myPage, 'lxml');

# 使用beautifulsoup來解析html

titleList = soup.find_all('span', class_='link_postdate');

# 使用beautifulsoup來解析html

viewList = soup.find_all('span', class_='link_view');

allTitleList.extend(titleList);

allViewList.extend(viewList);

#頁號加1

page_num = page_num 1;

# ----------------循環結束渠道數據,下面是為了繪圖準備數據,並且對數據做加工-----------------

# 將數據結果順序反轉,因為之前是倒序排列,我們需要的時間是從前到後的

allTitleList.reverse;

allViewList.reverse;

# 聲明兩個數組,存儲的即為x、y軸的值

xValues = [];

yValues = [];

# 通過循環給存儲x和y軸坐標值的list賦值

for n in range(len(allViewList)):

xvalue = allViewList[n].contents[1].encode('utf-8'); # 取出閱讀數量數據

yvalue = allTitleList[n].get_text.encode('utf-8'); # 取出閱讀日期數據

yValues.append(xvalue[1:len(xvalue)-1]) # 因為去除的閱讀數是帶的,所以我們需要截取,對於字符串的截取就相當於截取數組

xValues.append(yvalue) # 將閱讀數量放在list中

# 列印輸出我們的數據

print'閱讀數量:%s 日期:%s' % (yValues[n], xValues[n]);

# --------------下面是開始繪圖部分--------------

# 這行代碼是設置中文字體可以展示,否則將會報錯

mpl.rcParams['font.sans-serif'] = ['SimHei']

x = range(len(xValues))

plt.plot(x, yValues, marker='o', mec='r', mfc='w', label=u'x時間和y閱讀數關係折線圖')

plt.legend # 讓圖例生效

# 可以看到x和y 設置的方式是不同的,因為x軸可能只是一個名稱,一個分類,而不是一個具體的數值,所以通過這種方式來做了,而對於y則是要具體展示的數值

plt.xticks(x, xValues, rotation=45) # 這裡的rotation,當名稱展示時候,一個傾斜的角度,當文案很長時候特別好用

plt.margins(0) # 這個不設置的話,折線的開始和結束出會有間距

plt.subplots_adjust(bottom=0.27) # 設置折線圖和底部區域的距離

plt.xlabel(u"time(s)閱讀日期") #X軸標籤

plt.ylabel(u"閱讀數量(次)") #Y軸標籤

plt.title(u"閱讀數量趨勢圖") #標題

# 展示圖表對話框

plt.show

其實,上面的代碼寫的還是蠻清楚的,相比之前的代碼,就是需要導入pylab模塊,裡面自然是包含了matplotlib的了,之前代碼還是爬取的,一變的是之前我們抓取的是閱讀數量和博客title,現在是閱讀數量和每篇博客創建時間,二是將閱讀數量和閱讀日期分別放在了list中方便下面使用。然後第二部分就是將數據做整合,即為繪圖準備x和y軸的值,兩者均放在一個list裡面,兩個list的數量是一致的,否則是會報錯的。第三部分則是繪圖部分,首先是設置了繪圖可以正確展示中文,其次是將x和y軸的數據給了繪圖實例,然後讓繪圖實例生效,因為我們的x軸只是一個名稱展示,這裡即為日期展示,所以不能像y軸那樣子直接把值塞進去,所以下面調用了xticks方法進行了特殊處理,下面又設置了x和y軸標籤,即x和y軸分別代表什麼了。最後就是我們的圖表的show(秀)啦。讓我們看看最終效果圖吧:

嗯,看起來貌似還不錯,不過最近的閱讀數量有點低呀,尷尬啦。有人會問上面的xticks方法的rotation是幹嘛的,就是讓我們的x軸數值逆時針旋轉45度呀,你看我們的x軸的每個數值都那麼長,如果不旋轉肯定覆蓋了呀,還有subplots_adjust這個方法是設置繪圖區域和上下左右之間的距離的,特別是底部的,如果不設置的話,那麼長的文案是會被下面的菜單欄覆蓋的哦,然後我們再說說plot這個方法的幾個參數的意思,前兩個就是x和y軸的數據了,第三個就是設置上圖的紅圈即為標記點了,第四個參數是設置標記點的顏色,上面r代表紅色,你換成g就是綠色了,如果不設置的話,默認是藍色。第五個參數就是設置標記點是否是實心,如果mfc不設置的話就是實心的,最後一個參數就是折線圖的實例和說明了。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了