用Matplotlib庫繪圖
Matplotlib是一個非常好用的高質量繪圖工具庫,可以根據輸入的資料繪制各種圖形,如折線圖、柱狀圖、餅圖、散點圖等,
1.繪制折線圖
折線圖是用直線段將各資料點連接起來而組成的圖形,以折線方式顯示資料的變化趨勢,下面我們繪制一個簡單的折線圖,
從Matplotlib庫匯入pyplot模塊,簡稱plt,
>>> import matplotlib.pyplot as plt
準備繪圖時要用到的資料,x和y表示與x軸和y軸對應的資料,
>>> x=[0,1,2,3,4,5]
>>> y=[0,1,4,9,16,25]
呼叫模塊的plot函式繪圖,
>>> plt.plot(x,y)
呼叫模塊的savefig函式把圖形保存為矢量圖,
>>> plt.savefig('H:\示例\第9章\plt_line.svg')
用瀏覽器打開矢量圖,效果如圖9-10所示,

圖9-10
plot函式包括許多引數,除了資料之外,常用的引數如下:color表示折線的顏色,marker表示折線上資料點處的標記風格,linestyle表示折線的型別,linewidth表示線條粗細,markersize表示資料點標記大小,
>>> plt.plot(x,y,color='red', marker='o', linestyle='dashed', linewidth=1, markersize=5)
呼叫模塊的show函式顯示圖形到螢屏,
>>> plt.show()
顯示效果如圖9-11所示,

圖9-11
顏色(color)、標記風格(marker)、線條樣式(linestyle)的設定可以進一步簡寫,可以用每個屬性的縮寫,例如,“ro:”表示紅色、圓點、虛線,
>>> plt.plot(x,y,'ro:', linewidth=1, markersize=5)
常用的顏色縮寫包括:藍(b)、綠(g)、紅(r)、藍綠(c)、洋紅(m)、黃(y)、黑(k)、白(w),
常用的點型縮寫包括:點標記(.)、像素標記(,)、實心圈標記(o)、倒三角標記(v)、上三角標記(^)、左三角標記(<)、右三角標記(>)、下花三角標記(1)、上花三角標記(2)、左花三角標記(3)、右花三角標記(4)、實心方形標記(s)、五邊形標記(p)、星標記(*)、豎六邊形標記(h)、橫六邊形標記(H)、加號標記(+)、叉標記(x)、鉆石標記(D)、菱形標記(d)、豎線標記(|)、橫線標記(_),
常用的線型縮寫包括:實線(-)、破折(--)、點畫線(-.)、虛線(:)、無線條(空格),
在Matplotlib中畫圖,要提供x軸所有的數值以及y軸所有的數值,而且這兩個數值串列的數目要能夠逐一配對,也就是一個x值要搭配一個y值,上例中,實際上就是將(0,0)、(1,1)、(2,4)、(3,9)、(4,16)、(5,25)這6個點連接起來,
要注意的是,當只輸入一維資料的時候,自動將其當作y軸數值處理,x軸默認生成[0,1,2,…],
下面我們在圖中繪制多條折線圖,
import matplotlib.pyplot as plt
x=[0,1,2,3]
y0=[4,6,8,10]
y1=[4,9,16,25]
? plt.plot(x,y0,'bo--',label='電腦')
plt.plot(x,y1,'rp-',label='手機')
? plt.legend(loc='best')
? plt.rcParams['font.sans-serif']=['SimHei']
? plt.title('2019年各產品銷量(單位:萬臺)', fontsize=20)
index_name=['1季度', '2季度', '3季度', '4季度']
? plt.xticks(x, index_name)
plt.show()
陳述句?繪制兩條不同風格的折線;陳述句?呼叫legend函式設定圖例位置;陳述句?呼叫rcParams函式設定中文字體;陳述句?呼叫title函式設定圖表標題;陳述句?呼叫xticks函式設定x軸數值,最后呼叫show函式顯示圖形,效果如圖9-12所示,

圖9-12
2.繪制其他型別圖形
折線圖是基于plt.plot函式繪制的,Matplotlib庫還提供了許多不同種類圖形的函式,
下面我們將多種型別的圖形繪制在一起,
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
x=[0,1,2,3]
label=['東區','西區','北區','南區']
value=[2,4,6,8]
? fig=plt.figure()
? ax_1=fig.add_subplot(2,2,1)
? ax_1.plot(x,value,'rp-')
? ax_1.set_xticks([0,1,2,3])
? ax_1.set_xticklabels(['東區','西區','北區','南區'])
? ax_2=fig.add_subplot(2,2,2)
ax_2.pie(value,labels=label,autopct='%1.1f%%',startangle=90)
? ax_3=fig.add_subplot(2,2,3)
ax_3.bar(label,value)
? ax_4=fig.add_subplot(2,2,4)
ax_4.barh(label,value)
fig.show()
? fig.savefig('H:\示例\第9章\pyplot_4.png', dpi=400)
陳述句?呼叫figure函式新建一個畫布,然后在這個畫布上添加各種元素;陳述句?在2×2的繪圖區域添加第一個子圖;陳述句?在子圖中繪制折線;陳述句?設定x軸的標簽;陳述句?設定x軸的標簽文字;陳述句?繪制餅圖;陳述句?繪制柱狀圖;陳述句?繪制條形圖;陳述句?保存圖片到本地,效果如圖9-13所示,

圖9-13
9.3.2 用pandas庫繪圖
Matplotlib庫功能強大,但是相對底層,前面章節介紹過的資料分析庫pandas,它的繪圖功能就是基于Matplotlib庫,這里繼續介紹用Pandas庫繪圖的方法,
Series和DataFrame是Pandas庫中主要的兩種資料結構,都內置了plot方法,可以繪制圖形,
1.Series.plot
Series是一個一維資料結構,它由index和value組成,類似于Excel表格中的一列資料,由行號和資料組成,根據這樣一列資料,我們可以繪制各種圖表,如柱狀圖、條形圖、折線圖、餅圖等,
下面以實體說明,
? import pandas as pd
import matplotlib.pyplot as plt
? plt.rcParams['font.sans-serif']=['SimHei']
? data=pd.Series([2,4,6,8],index=['1季度', '2季度', '3季度', '4季度'])
? fig=data.plot(kind='bar', title='2019年各季度銷量(單位:萬臺)',
figsize=(20,16),fontsize=30)
? fig.axes.title.set_size(40)
plt.show()
陳述句?匯入pandas庫,并給它起別名pd,匯入Matplotlib庫的pyplot子模塊,并給它起別名plt;陳述句?是設定中文字體;陳述句?構造資料;陳述句?繪制柱狀圖并設定標題;陳述句?設定標題字號,效果如圖9-14所示,

圖9-14
plot函式也有許多引數,例如引數kind控制圖表型別,將kind='bar'修改為kind='pie',圖表將變為餅狀圖,效果如圖9-15所示,

圖9-15
2.DataFrame.plot
DataFrame是一個二維結構,除了擁有index和value之外,還擁有column,它類似于一張Excel表格,由多行、多列構成,DataFrame由多個Series物件組成,無論是行還是列,單獨拆分出來都是一個Series物件,
下面以實體說明,
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
? data=pd.DataFrame([[3,8],[2,6],[6,1],[5,4]],
index=['1季度', '2季度', '3季度', '4季度'],columns=['手機', '電腦'])
? fig=data.plot(kind='bar',title='2019年各季度產品銷量(單位:萬臺)',
figsize=(20,16),fontsize=30)
fig.axes.title.set_size(40)
plt.legend(loc='best',fontsize=30)
plt.show()
陳述句?構造了繪圖所需資料;陳述句?繪制圖表,設定標題、圖表區大小、字號;陳述句設定標題字號;陳述句設定圖例字號,最后顯示圖表,效果如圖9-16所示,

圖9-16
9.3.3 用Python繪制詞云圖
使用Python不僅可以繪制統計圖表,還可以繪制各種可視化圖,例如文本分析常用的詞云圖,
詞云圖,也叫“文字云”,是文本中出現頻率較高的“關鍵詞”的視徑訓展現,頻率越高,則字體越大、越突出,也越重要,相對于柱狀圖、折線圖、餅圖等用來顯示數值資料的圖表,詞云圖可以展示大量文本資料,通過過濾掉大量的低頻低質的文本資訊,使瀏覽者只要一眼掃過文本就可領略文本的主旨,
制作詞云圖要使用的庫有:jieba、wordcloud、numpy、PIL、matplotlib,它們的安裝方法都非常簡單,直接用pip命令安裝即可,
下面我們通過爬蟲抓取電影《我們的未來》豆瓣點評,并制作點評文字的詞云圖,
? import numpy as np
import jieba
from PIL import Image
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
? with open(r'H:\示例\第9章\影評.txt', 'rb') as f:
text=f.read()
words=jieba.cut(text)
wordstr=' '.join(words)
wordcloud=WordCloud(font_path='H:\示例\第9章\msyh.ttf',
mask=np.array(Image.open(r'H:\示例\第9章\background.png')),
width=600, height=600, max_words=100, max_font_size=80,
stopwords=set(STOPWORDS),scale=4,background_color='white')
? wordcloud.generate(wordstr)
? wordcloud.to_file(r'H:\示例\第9章\wordcloud.png')
陳述句?引入必要的庫檔案;陳述句?打開影評檔案,讀取文本;陳述句使用jieba分詞,將檔案分割為詞語;陳述句設定詞云圖,如字體、背景(mask)、寬、高、最大字數、最大字號、停用詞(排除詞串列,即不顯示的單詞串列,如助詞等)、縮放、背景顏色等;陳述句?匯入詞語,生成詞云圖;陳述句?將生成的詞云圖保存到本地,
打開詞云圖,效果如圖9-17所示(略),
本文摘自《學Python,不加班——輕松實作辦公自動化》

這是一本關于如何利用Python提高日常辦公效率的書,書中凝聚了作者多年的實踐經驗和獨特思考,旨在幫助讀者準確、高效地完成大量高重復度的作業,
本書匯集了日常辦公和處理檔案時常見的問題,通過實體的演示與講解,幫助讀者靈活有效地使用Python處理作業中遇到的問題,全書共11章,涵蓋Python的各種應用場景,具體包括檔案管理自動化,網路資訊自動獲取,TXT、XLS/XLSX、DOC/DOCX、PPT、PDF、圖片檔案的自動化處理,模擬滑鼠、鍵盤操控本地軟體,自動化運行管理等,本書力圖淡化編程中的抽象概念,貼合作業場景,注重實戰效果,通過對Python技術的巧妙講解,幫助讀者成為高效率的辦公室“超人”,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289199.html
標籤:其他
