天天看點

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

導入子產品

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 圖形;
  • 甚至是圖形動畫等等.
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

看下代碼示例,最簡單的畫一張折線圖:

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() #顯示圖形
           
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

圖形 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()
           
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

标題、标簽、圖例、刻度和顯示範圍

title:設定标題

plt.title("這是一個标題")

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

xlabel、ylabel:設定X軸Y軸标簽

plt.xlabel("X軸标簽")

plt.ylabel("Y軸标簽")

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

設定标簽的文字的大小和顔色

label_font = {
    'family': 'SimHei',
    'weight': 'normal',
    'size': 30,
    'color':'red',
}
plt.xlabel("X軸标簽",label_font)
plt.ylabel("Y軸标簽",label_font)
           

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

xlim、ylim:控制畫闆的範圍

plt.xlim(-6,6) # 設定X軸的顯示範圍
plt.ylim(-3,3) # 設定Y軸的顯示範圍
           

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

xticks、yticks: 控制畫闆軸的顯示刻度值

plt.xticks([刻度範圍],[點顯示的東西]) 

刻度上之前的值會被擦除,重新繪制刻度顯示值,不在刻度範圍中的點不會顯示内容。

plt.yticks([-1,0,1],["A","B","C"])

plt.xticks([0],["原點"])

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

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()
           
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

子圖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()
           

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

設定邊框

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() #顯示圖形
           

外部邊框都已經去掉了

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

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清單。

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展
科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展

儲存圖檔

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 制圖

科學計算庫(六)Matplotlib畫圖導入子產品簡介圖形 figure标題、标簽、圖例、刻度和顯示範圍子圖subplot設定邊框儲存圖檔常見圖形科學計算庫拓展