Matplotlib庫入門 Matplotlib庫介紹 Matliotlib庫是Python優秀的數據可視化第三方庫。 Matliotlib庫的效果見:http://matplotlib.org/gallery.html Matplotlib庫由各種可視化類構成,內部結構複雜,受Matlab啟發。 ...
Matplotlib庫入門
Matplotlib庫介紹
Matliotlib庫是Python優秀的數據可視化第三方庫。
Matliotlib庫的效果見:http://matplotlib.org/gallery.html
Matplotlib庫由各種可視化類構成,內部結構複雜,受Matlab啟發。
matplotlib.pyplot是繪製各類可視化圖形的命令字型檔,相當於快捷方式。導入方式如下:
import matplotlib.pyplot as plt
範例:使用Matplotlib庫繪圖
import matplotlib.pyplot as plt plt.plot([3,1,4,5,2]) plt.ylabel("Grade") plt.savefig('test',dpi=600) #PNG文件 plt.show()
plt.savefig()將輸出圖形存儲為文件,預設PNG格式,可以通過dpi修改輸出質量。
import matplotlib.pyplot as plt plt.plot([0,2,4,6,8],[3,1,4,5,2]) plt.ylabel("Grade") plt.axis([-1, 10, 0, 6]) plt.show()
plt.plot(x,y)
只有一個輸出列表或數組是,參數被當作Y軸,X軸以索引自動生成。當有兩個以上參數時,按照X軸和Y軸順序繪製數據點。plt.axis()指定X軸和Y軸的起始位置。
pyplot的繪圖區域
plt.subplot(nrows,ncols,plot_number)
在全局繪圖區域中創建一個分區體系,並定位到一個子繪圖區域。
範例:分區域繪圖
import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t) * np.cos(2 * np.pi * t) a = np.arange(0.0, 5.0, 0.02) plt.subplot(211) # 可以將3個參數合併傳參 plt.plot(a ,f(a)) plt.subplot(2,1,2) plt.plot(a, np.cos(2 * np.pi * a),'r--') plt.show()
pyplot的plot()函數
plt.plot(x, y, format_string, **kwargs)
- x:X軸數據,列表或數組,可選(繪製多條曲線時,各條曲線的x不能省略)
- y:Y軸數據,列表或數組
- format_string:控制曲線的格式字元串(由顏色字元、風格字元和標記字元組成),可選
顏色字元 顏色字元 說明 顏色字元 說明 'b' 藍色 'm' 洋紅色 magenta 'g' 綠色 'y' 黃色 'r' 紅色 'k' 黑色 'c' 青綠色 cyan 'w' 白色 '#008000' RGB某顏色(十六進位色彩) '0.8' 灰度值字元串 風格字元 風格字元 說明 風格字元 說明 '-' 實線 ':' 虛線 '--' 破折線 '' ' ' 無線條 '-.' 點劃線 標記字元 標記字元 說明 標記字元 說明 '.' 點標記 's' 實心方形標記 ',' 像素標記(極小點) 'p' 實心五角標記 'o' 實心圈標記 '*' 星形標記 'v' 倒三角標記 'h' 豎六邊形標記 '^' 上三角標記 'H' 橫六邊形標記 '>' 右三角標記 '+' 十字標記 '<' 左三角標記 'x' x標記 '1' 下花三角標記 'D' 菱形標記 '2' 上花三角標記 'd' 瘦菱形標記 '3' 左花三角標記 '|' 垂直線標記 '4' 右花三角標記 - **kwargs:第二組或更多(x, y, format_string)
- color:控制顏色,color='green'
- linestyle:線條風格,linestyle='dashed'
- marker:標記風格,marker='o'
- markerfacecolor:標記顏色,markerfacecolor='blue'
- marksize,標記尺寸,markerfacecolor=20
範例:將顏色字元、風格字元和標記字元組合使用
import numpy as np import matplotlib.pyplot as plt a = np.arange(10) plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5) plt.show()
import numpy as np import matplotlib.pyplot as plt a = np.arange(10) plt.plot(a, a*1.5,'go-', a, a*2.5,'rx', a, a*3.5,'*', a, a*4.5,'b-.') plt.show()
pyplot的中文顯示
pyplot並不預設支持中文顯示,需要rcParams修改字體實現。
import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.family']='SimHei' # 'SimHei'是黑體 plt.plot([3,1,4,5,2]) plt.ylabel("縱軸(值)") plt.savefig('test',dpi=600)
rcParams的屬性
屬性 | 說明 |
---|---|
'font.family' | 用於顯示字體的名字 |
'font.style' | 字體風格,正常'normal'或斜體'italic' |
'font.size' | 字體大小,整數字型大小或者'large'、'x-small' |
rcParams['font.family']
中文字體 | 說明 |
---|---|
'SimHei' | 中文黑體 |
'Kaiti' | 中文楷體 |
'LiSu' | 中文隸書 |
'FangSong' | 中文仿宋 |
'YouYuan' | 中文幼圓 |
'STSong' | 華文宋體 |
import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.family']='STsong' matplotlib.rcParams['font.size']=20 a = np.arange(0.0, 5.0, 0.02) plt.xlabel('橫軸:時間') plt.ylabel("縱軸:振幅") plt.plot(a, np.cos(2*np.pi*a),'r--') plt.show()
在有中文輸出的地方,增加一個屬性:fontproperties
import numpy as np import matplotlib.pyplot as plt a = np.arange(0.0, 5.0, 0.02) plt.xlabel('橫軸:時間',fontproperties='SimHei',fontsize=20) plt.ylabel("縱軸:振幅",fontproperties='SimHei',fontsize=20) plt.plot(a, np.cos(2*np.pi*a),'r--') plt.show()
pyplot的文本顯示函數
函數 | 說明 |
---|---|
plt.xlabel() | 對X軸增加文本標簽 |
plt.ylabel() | 對Y軸增加文本標簽 |
plt.title() | 對圖形整體增加文本標簽 |
plt.text() | 在任意位置增加文本 |
plt.annotate() | 在圖形中增加帶箭頭的註解 |
範例:使用上述標簽
plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)
import numpy as np import matplotlib.pyplot as plt a = np.arange(0.0, 5.0, 0.02) plt.plot(a, np.cos(2*np.pi*a),'r--') plt.xlabel('橫軸:時間',fontproperties='SimHei',fontsize=15,color='green') plt.ylabel("縱軸:振幅",fontproperties='SimHei',fontsize=15) plt.title(r'正弦波實例$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25) plt.annotate(r'$\mu=100$',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2)) # plt.annotate() 中'$$'表示使用Latex格式,xy為箭頭指向位置,xytext為文本顯示位置,facecolor為箭頭顏色,shrink為箭頭縮進比率,width為箭頭寬度。 plt.axis([-1, 6, -2, 2]) plt.grid(True) plt.show()
pyplot的子繪圖區域:plt.subplot2grid()
plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
理念:設定網格,選中網格,確定選中行列區域數量,編號從0開始
- GridSpec為二元組(m,n),表示將網格分為m行n列
- CurSpec為二元組(a,b),表示選擇第幾個網格,索引從0開始
- colspan和rowspan表示合併幾個單元格,預設為1(不合併)
plt.subplot2grid((3,3),(1,0),colspan=2)
GridSpec類
import matplotlib import matplotlib.gridspec as gridspec matplotlib.rcParams['font.size']=6 gs = gridspec.GridSpec(3,3) ax1 = plt.subplot(gs[0, :]) ax2 = plt.subplot(gs[1, :-1]) ax3 = plt.subplot(gs[1:, -1]) ax4 = plt.subplot(gs[2, 0]) ax5 = plt.subplot(gs[2, 1])