導入子產品
import matplotlib.pyplot as plt
如果想顯示互動式界面,可以加:
%matplotlib tk # 預設是行内顯示%matplotlib inline
解決中文顯示問題
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
簡介
Python最常用的繪圖庫,提供了一整套十分适合互動式繪圖的指令API,比較友善的就可以将其嵌入到GUI應用程式中。
官網examples入門學習:
http://matplotlib.org/examples/index.html
http://matplotlib.org/gallery.html
Matplotlib它能幫你畫出美麗的:
- 線圖;
- 散點圖;
- 等高線圖;
- 條形圖;
- 柱狀圖;
- 3D 圖形;
- 甚至是圖形動畫等等.
看下代碼示例,最簡單的畫一張折線圖:
import matplotlib as mpl
plt.plot([1,2,3],[1.5,1,2.5]) # X軸為[1,2,3],Y軸為[1.5,1,2.5]
plt.show() #顯示圖形
圖形 figure
figure:圖形、畫闆,matplotlib中的所有圖像都是位于figure對象中。matplotlib 的 figure 就是一個 單獨的 figure 小視窗,小視窗裡面還可以有畫很多的圖形。
建立畫闆時的參數,figure(num,figsize)
num:畫闆序号,僅給畫闆編号。
figsize:設定畫闆大小,以英寸為機關。figsize=(8,5) 8英寸寬,5英寸高
x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)
plt.figure() #建立第一個畫闆
plt.plot(x,y1)
plt.figure(num=3,figsize=(8,5)) # 建立第二個畫闆
plt.plot(x,y2)
plt.show()
标題、标簽、圖例、刻度和顯示範圍
title:設定标題
plt.title("這是一個标題")
xlabel、ylabel:設定X軸Y軸标簽
plt.xlabel("X軸标簽")
plt.ylabel("Y軸标簽")
設定标簽的文字的大小和顔色
label_font = {
'family': 'SimHei',
'weight': 'normal',
'size': 30,
'color':'red',
}
plt.xlabel("X軸标簽",label_font)
plt.ylabel("Y軸标簽",label_font)
xlim、ylim:控制畫闆的範圍
plt.xlim(-6,6) # 設定X軸的顯示範圍
plt.ylim(-3,3) # 設定Y軸的顯示範圍
xticks、yticks: 控制畫闆軸的顯示刻度值
plt.xticks([刻度範圍],[點顯示的東西])
刻度上之前的值會被擦除,重新繪制刻度顯示值,不在刻度範圍中的點不會顯示内容。
plt.yticks([-1,0,1],["A","B","C"])
plt.xticks([0],["原點"])
legend ():生成預設圖例
matplotlib 中的 legend 圖例就是為了幫我們展示出每個資料對應的圖像名稱. 更好的讓讀者認識到你的資料結構。
畫折線圖的時候,調用plot的時候可以增加線條的label,畫多個線條的時候就能區分線條。
設定線條的label時,必須調用plt.legend()線條标簽才會顯示出來。
x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)
figsize=(8,6)
plt.figure(figsize=figsize) #建立一個畫闆
plt.title("這是一個标題")
label_font = {
'family': 'SimHei',
'weight': 'normal',
'size': 30,
'color':'red',
}
plt.xlabel("X軸标簽",label_font)
plt.ylabel("Y軸标簽",label_font)
plt.xlim(-6,6) # 設定X軸的顯示範圍
plt.ylim(-3,3) # 設定Y軸的顯示範圍
plt.yticks([-1,0,1],["A","B","C"]) # 設定顯示刻度值
plt.xticks([0],["原點"])
plt.plot(x,y1,label="SIN") # 增加線條的label,标注線條功能
plt.plot(x,y2,label="COS")
plt.legend() # 生成圖例
plt.show()
子圖subplot
Subplot:子圖
figure對象下建立一個或多個subplot對象(即axes)用于繪制圖像。
subplot(numRows, numCols, plotNum)
numRows:幾行
numCols:幾列
plotNum:第幾個子圖
也可以通過figure對象,用面向對象的方式添加子視圖,fig.add_subplot()傳回子視圖對象。
x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)
plt.figure() #建立第一個畫闆
plt.subplot(1,2,1) # 一行二列第1個子圖
plt.plot(x,y1)
plt.title("第一張圖")
plt.subplot(1,2,2) # 一行二列第2個子圖
plt.plot(x,y1)
plt.title("第二張圖")
fig2=plt.figure(num=3,figsize=(8,5)) # 建立第二個畫闆
aex1=fig2.add_subplot(2,1,1) # 面向對象方式建立子圖,二行一列第1個子圖
aex2=fig2.add_subplot(2,1,2) # 二行一列第2個子圖
aex1.plot(x,y2)
aex1.set_title("第三張圖")
aex2.plot(x,y2)
aex2.set_title("第四張圖")
fig2.subplots_adjust(wspace=0,hspace=0) #調節子視圖之間的間距
plt.show()
設定邊框
gca擷取目前坐标軸資訊。使用spines設定邊框,使用set_color設定邊框顔色:預設白色
ax=plt.gca()
ax.spines['top'].set_color("none")
plt.plot([1,2,3],[1.5,1,2.5]) # X軸為[1,2,3],Y軸為[1.5,1,2.5]
ax=plt.gca()
ax.spines['top'].set_color("none")
ax.spines['left'].set_color("none")
ax.spines['right'].set_color("none")
ax.spines['bottom'].set_color("none")
plt.show() #顯示圖形
外部邊框都已經去掉了
Sublots():傳回一個畫闆和多個子圖
參數:
nrows=x, ncols=x, sharex=True, sharey=False,
gridspec_kw={'height_ratios':[2,2,1,1]}
例: fig, ax = plt.subplots(2,2),
其中參數分别代表子圖的行數和列數,一共有 2x2 個圖像。函數傳回一個figure圖像和一個子圖ax的array清單。
儲存圖檔
plt.savefig('filepath')
plt.savefig('filepath',dpi=300) 設定dpi圖檔清晰度
常見圖形
1、折線圖plot
plot(x,y1,x,y2) ,一個plot也可以畫多條線條
color="" 設定線條顔色
plot(x,y,color='red')
linewidth=num 設定線條寬度
plot(x,y,color='red',linewidth=3)
linestyle='-.' 設定線條類型
- dashed 虛線
- dotted 點線
- solid 實線
- -. 虛點線
marker 标記點樣式
plot(x,y,color='red',linewidth=1,marker="*")
markersize=num 标記點大小
2、柱狀圖bar
plt.bar(x,data,width=0.8,align='center')
x資料位置
data資料值,高度
align 對齊方式,edge右邊,
plt.text(x,y,text) x,y點坐标上面寫字
3、餅圖pie
plt.pie(data,label=[],explode)
explode 每一塊離開中心的距離
radius=float 半徑長度,控制圓大小
startangle 起始角度
shadow=True 陰影
autopct="%.1f%%” 每一塊的百分比描述
pctdistance 描述距離中心的位置
4、散點圖 scatter
scatter(x,y)
x,y相同長度的序列
科學計算庫拓展
通過Series和DataFrame直接畫圖
ser.plot() 折線圖
ser.plot(kind='bar') 柱狀圖
ser.plot(kind='pie',autopct="%.1f%%") 餅圖
plt.show()
DataFrame 制圖