基本繪圖流程
In[ ]: import numpy as np #引入 np
import matplotlib.pyplot as plt #引入 plt
plt.plot([3,3,5,6,2]) #用 plot 函數繪制二維圖形
#當只有一組數據時,此數據代表 y 軸數,下標代表 x 軸數
plt.ylabel("garde") #給 y 軸加標簽 “gard”
plt.savefig('D:/classwork/例1.png'.dpi=600) #保存圖形,dpi 英寸像素點(質量)
plt.show() #顯示圖形,默認 PNG 格式
使用Matplotlib繪制圖表,需要先導入繪制圖表的模塊pyplot
Import matplotlib.pyplot as plt(plt引入模塊別名)
繪圖流程:創建畫布—創建子圖——制作圖形——美化圖片——保存圖片——顯示圖片
Pyplot模塊中默認有一個Figure對象,該對象可以理解為一張空白的畫布,用於容納圖表的各種組件。
1.創建畫布與創建子圖
第一部分主要作用是構建出一張空白的畫布,並可以選擇是否將整個畫布划分為多個部分,方便在同一幅畫上繪制多個圖形的情況。最簡單的繪圖可以省略第一部分,而后直接在默認的畫布上進行圖形繪制。
創建一個空白畫布
如果不希望在默認的畫布山上繪制圖形,則可以調用figure()函數構建一張新的空白畫布
plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)
num:圖像編號或名稱,數字為編號,字符串為名稱
figsize:指定 figure 的寬和高,單位為英寸
dpi:參數指定繪圖對象的分辨率,即每英寸多少個像素,缺省值為80,1英寸等於2.5cm
facecolor:背景顏色
edgecolor:邊框顏色
frameon:是否顯示邊框
創建畫布
In[ ]: %matplotlib notebook #如果畫布不顯示,則輸入此行
fig=plt.figure(1,facecolor='r')
plt.savefig('D:/classwork/例2.png',facecolor=fig.get_facecolor())
創建並選中子圖
plt.subplot(nrows,ncols,plot_number)
#行 #列 #當前子圖區
創建子圖
In[ ]: fig=plt.figure(figsize=(5,5),facecolor='#FF9966') #創建畫布時設置背景顏色
plt.subplot(3,2,4)
plt.plot([0,2,4,6,8],[3,1,4,5,2])
plt.xlabel("garde")
plt.savefig('D:/classwork/例3',dpi=600,facecolor=fig.get_facecolor())
2.添加畫布內容
第二部分是繪圖的主體部分。其中的添加標題、添加坐標軸名稱、繪制圖形等步驟是並列的,沒有先后順序,但是添加圖例一定要在繪制圖形之后。
Pyplot中添加各類標簽和圖例的常用函數
3.保存與顯示圖形
第三部分主要用於保存和顯示圖形,這部分內容的常用函數只有兩個,並且參數很少。
Pyplot中保存與顯示圖形的常用函數
pyplot中的基礎繪圖語法
In[ ]: import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0,1.1,0.01)
plt.title('lines') #添加標題
plt.xlabel('x') #添加 x 軸名稱
plt.ylabel('y') #添加 y 軸名稱
plt.xlim((0,1)) #確定 x 軸范圍
plt.ylim((0,1)) #確定y 軸范圍
plt.xticks([0,0.2,0.4,0.6,0.8,1]) #規定 x 軸刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1]) #規定 y 軸刻度
plt.plot(a,a**2) #添加 y=x^2 曲線
plt.plot(a,a**4) #添加 y=x^4 曲線
plt.legend(['y=x^2','y=x^4']) #添加圖例
plt.savefig('D:/classwork/例4.png')
plt.show()
Out[ ]:
包含子圖繪制的基礎語法
In[ ]: rad = np.arange(0,np.pi*2,0.01)
#第一幅子圖
p1 = plt.figure(figsize=(8,6),dpi=80) #確定畫布大小
ax1 = pl.add_subplot(2,1,1) #創建一個2行1列的子圖,並開始繪制第一幅
plt.title('lines') #添加標題
plt.xlabel('x') #添加 x 軸的名稱
plt.ylable('y') #添加 y 軸的名稱
plt.xlim((0,1)) #添加 x 軸范圍
plt.ylim((0,1)) #添加 y 軸范圍
plt.xticks([0,0.2,0.4,0.6,0.8,1]) #確定 x 軸刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1]) #確定 y 軸刻度
plt.plot(rad,rad**2) #添加 y=x^2 曲線
plt.plot(rad,rad**4) #添加 y=x^4 曲線
plt.legend(['y=x^2','y=x^4'])
#第二幅子圖
ax2 = pl.add_subplot(2,1,2) #開始繪制第二幅
plt.title('sin/cos') #添加標題
plt.xlabel('rad') #添加 x 軸的名稱
plt.ylabel('value') #添加 y 軸的名稱
plt.xlim((0,np.pi*2)) #確定 x 軸范圍
plt.ylim((-1,1)) #確定 y 軸范圍
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2]) #確定 x 軸刻度
plt.yticks([-1,-0.5,0,0.5,1]) #確定 y 軸刻度
plt.plot(rad,np.sin(rad)) #添加 sin 曲線
plt.plot(rad,np.cos(rad)) #添加 cos 曲線
plt.legend(['sin','cos'])
plt.savefig('D:/classwork/sincos.png')
plt.show()
Out[ ]:
設置 pyplot 的動態參數
pyplot 使用 rc 配置文件來自定義圖形的各種默認屬性,被稱為 rc 配置或 rc 參數。在 pyplot 中,幾乎所有的屬性都是可以控制的,例如視圖窗口大小以及每英寸點數、線條寬度、顏色和樣式、坐標軸、坐標和網格屬性、文本、字體等。
調節線條的 rc 參數
In[ ]: #原圖
x = np.linspace(0,4*np.pi) #生成 x 軸數據
y = np.sin(x) #生成 y 軸數據
plt.plot(x,y,label=("$sin(x)$") #繪制 sin 曲線圖
#LaTex格式
plt.title('sin')
plt.savefig('D:/classwork/默認sin曲線.png')
plt.show()
Out[ ]:
In[ ]: #修改 rc 參數后的圖
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x,y,label='$sin(x)$') #繪制三角函數
plt.title('sin')
plt.savefig('D:/classwork/修改rc參數后的sin曲線.png')
plt.show()
Out[ ]:
marker取值 | 意義 | marker取值 | 意義 |
'1' | 下花三角 | ‘ 2 ’ | 上花三腳 |
'3' | 左花三角 | '4' | 右花三角 |
調節字體
默認的pyplot 字體並不支持中文字符的顯示,因此需要通過設置。
(1)rcParams 修改字體實現中文顯示
此方法會將其全部都設置為中文顯示,其他無需設置的也會設置,除非新建,不推薦使用。
rcParams 的屬性
屬性 | 說明 |
'font.family' |
用於顯示字體的名字 |
'font.style' |
用於顯示字體風格,正常'normal'或'italic' |
'font.size' |
用於顯示字體大小,整數字號或者'large','x-small' |
matplotlib.rcParams['font.family']='SimHei' #SimHei 黑體
In[ ]: #無法顯示中文標題
plt.plot(x,y,label='$sin(x)$') #繪制三角形
plt.title('sin曲線')
plt.savefig('D:/classwork/無法顯示中文標題 sin曲線.png')
plt.show()
In[ ]: #設置 rc 參數顯示中文標題
#設置字體為 SimHei 顯示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.reParams['axes.unicode_minus'] = False #設置正常顯示符號
plt.plot(x,y,label="$sin(x)$") #繪制三角函數
plt.title('sin 曲線')
plt.savefig('D:/classwork/顯示中文標題 sin曲線.png')
plt.show()
Out[ ]:
(2)在有中文輸出的地方,增加一個屬性:fontproperties
plt.title('sin曲線',fontproper='SomHei',fontsize=20)
復雜的繪圖區域
plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
理念:設定網格,選中網格,確定選中行列區域數量,編號從0開始。
plt.subplot2grid((3,3),(1,0),colspan=2)
# (3,3) 設定 3*3 網格,共 9 個網格
# (1,0) 選定網格,確定第1 行,第 0 列
# colspan=2,從第 1 行,第 0 列開始選中兩列
plt.subplot1grid((3,3),(0,0),colspan=3)
plt.subplot3grid((3,3),(1,2),rowspan=2)
plt.subplot4grid((3,3),(2,0))
plt.subplot5grid((3,3),(2,1))