matplotlib庫:一個優秀的數據可視化第三方庫
文檔:https://matplotlib.org/users/index.html
樣例:https://matplotlib.org/gallery/index.html
一、matplotlib庫簡介
matplotlib由各種可視化類構成,內部結構復雜,其受matlab啟發(怪不得很像matlab)。
matplotlib.pyplot是繪制各類可視化圖形的命令子庫,用戶可通過調用pyplot使用Matplotlib中所有可視化的類。
matplotlib庫的引用:import matplotlib.pyplot as plt
二、matplotlib庫中的各類主要函數
1、pyplot中的plot()函數:plt.plot(x, y, format_string ,**kwargs)
參數解釋:
x:表示x軸數據,列表或數組,可選。
y:表示y軸數據,列表或數組。
format_string:控制曲線的格式字符串,可選。有顏色字符、風格字符和標記字符組成。
顏色字符可由英語顏色首字母或RGB(#000000)或灰度值(0-1)構成。
風格字符:'-': 實線 '--':破折線 '-.':點划線
':':虛線 '' ''(空或者空格,單引號里夾單引號):無線條等。
標記字符:在曲線中的每個數據點的標記方式。主要有:
'.'點 ','像素(極小點) 'o'圓心 '*'星型 '1'下花三角
'2'上花三角 's'實心方型 'p'實心五角等。
**kwargs:第二組或跟多(x,y,fortmat_string)
color:控制顏色,例,color='red';
linestyle:線條風格,例,linestyle='dashed'; marker:標記風格,例,marker='o'
markerfececolor:標記顏色,例,markerfacecolor='blue';
markersize:例,標記尺寸,markersize=20
注:當繪制多條曲線時,各條曲線的x不能省略。當只繪制一條曲線,可省略x軸數據,
y軸數據索引值可作為x軸,進而將圖形繪制出來。
2、pyplot的中文顯示方法:
兩種方法:
a) 方法一:pyplot不默認支持中文顯示,需要pyplot.rcParams屬性修改字體實現。(修改全局字體)
rcParams的屬性:
'font.family':用於顯示字體的名字
pyplot.rcParams['font.family'] : 'SimHei':中文黑體 'Kaiti':中文楷體 'LiSu':中文隸書
'FangSong':中文仿宋 'YouYuan':中文幼圓 'STsong':華文宋體 等
'font.style' :字體風格,正常是 'normal' 或 斜體 'italic'
'font.size' :字體大小,整數字號或者 'large' ,'x-small'
b) 方法二:在有中文輸出的地方,增加一個屬性:fontproperties。(修改某處字體,推薦這種方法)
例如:ptl.xlabel(' x軸 標簽 ', fontproperties='SimHei', fontsize=20 ) //表示此處字體為黑體,大小為20
3、pyplot的文本顯示:
函數 | 說明 |
plt.xlabel() | 對x軸增加文本標簽 |
plt.ylabel() | 對y軸增加文本標簽 |
plt.title() | 對圖形整體增加文本標簽 |
plt.text() | 在任意位置增加文本 |
plt.annotate() | 在圖形中增加帶箭頭的注解 |
a) plt.xlabel( s, **args) plt.ylabel(s, **args) plt.title(s, **args)
參數解釋 :s便簽內容,其他的參數可以是字體,字號,顏色等,具體查閱文檔。
b) plt.text( x, y, s,fontsize,**args )
參數解釋:x,y 表示文本位置,s表示文本內容,以及其他屬性,具體查閱文檔。
c) plt.annotate( s, xy=arrow_crd, xytext=text_crd , arrowprops=dict )
參數解釋:
s:表示注釋內容。
xy:一個坐標元組,表示箭頭的位置。
xytext:一個坐標元組,表示注解文本的位置。
arrowprops:字典類型,定義了箭頭的一些屬性。
4、pyplot的自繪圖區域:
a) plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1 )
理念:設定網絡,選中網絡,確定選中行列區域數量,編號從0開始。
參數解釋:
GridSpec:一個二元元組(x,y),將繪圖區域分成x行y列。
CurSpec:一個二元元組(m,n ),選中第m行,n列網格作為當前繪圖區域。
colspan=p ,rowspan=q :類似於html中的<table>標簽,合並第n列的第n+p-1列,合並第q行到第q+m-1行。
b) plt.subplot()=subplot(nrows, ncols, index, **kwargs)
參數解釋:ncows,ncols,index:表示將繪圖區分成nrows行ncols列,當前繪圖區處於第index個網格
index從1開始
三、pyplot常用基礎圖表函數
函數 | 說明 |
plt.plot(x,y,fmt) | 繪制一個坐標圖 |
plt.boxplot(data,notch,position) | 繪制一個箱形狀圖 |
plt.bar(left,height,width,bottom) | 繪制一個條形圖 |
plt.barsh(width,bottom,left,height) | 繪制一個橫向條i形圖 |
plt.polar(theta,r) | 繪制極坐標 |
plt.pie(data,explode) | 繪制餅圖 |
plt.psd(x,NFFT=256,pad_to,Fs) | 繪制功率譜密度圖 |
plt.specgram(x,NFFR=256,pad_to,F) | 繪制譜圖 |
plt.cohere( x, y,NFFT=256,Fs ) | 繪制X-Y相關性函數 |
plt.scatter(x,y) | 繪制散點圖,其中,x和y長度相同 |
plt.step(x,y, where ) | 繪制步階圖 |
plt.hist( x, bins , normed ) | 繪制直方圖 |
plt.contour(X,Y ,Z,N ) | 繪制等值圖 |
plt.vlines() | 繪制垂直圖 |
plt.stem(x,y,linefmt,markerfmt) | 繪制柴火圖 |
plt.plot_data() | 繪制數據日期 |