Python之matplotlib基礎

LTQblog發表於2017-06-11

Python之matplotlib基礎

matplotlib是Python優秀的資料視覺化第三方庫
matplotlib庫的效果可參考
http://matplotlib.org/gallery.html
matplotlib的使用 由各種視覺化類構成,內部結構複雜,受matlab庫啟發,matplotlab.pyplot是繪製種類視覺化圖形的命令子庫,相當於快捷方式
import matplotlib.pyplot as plt

一個小示例

import matplotlib.pyplot as plt
plt.plot([2,3,4,5,1,6])
plt.ylabel("Grade")
plt.ylabel("number")
plt.axis([-1,11,0,7])
plt.savefig('test',dpi=600)#plt.savefig()將輸出圖形儲存為檔案,預設為png格式,可以通過dpi修改輸出質量
plt.show()

得到結果

繪製多圖subplot

plot.subplot(nrows,ncols,plot_number)
在全域性繪製區域中建立一個分割槽體系,並定位到一個子繪圖區域
pyplot繪圖區域示例

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)
plt.plot(a, f(a))
plt.subplot(2, 1, 2)
plt.plot(a, np.cos(2 * np.pi * a), 'r--')
plt.savefig('test',dpi=600)
plt.show()

得到結果:

pyplot的plot()函式詳解

plt.plot(x,y,format_string,**kwargs)
x:x軸資料,列表或陣列,可選
y:y軸資料,列表或陣列
format_string: 控制曲線的格式字串,可遷
**kwargs: 第二組或更多的(x,y,format_string)

注意:當繪製多條曲線時,各條曲線的x不能省略

format_string:控制曲線的格式字串,可選。由顏色字元、風格字元和標記字元組成

顏色字元 說明 顏色字元 說明
‘b’ blue ‘m’ magenta洋紅色
‘g’ green ‘y’ 黃色
‘r’ red ‘k’ 黑色
‘c’ cyan青綠色 ‘w’ 白色
‘#008000’ RGB某顏色 ‘0.8’ 灰度值字串
風格字元 說明
‘-‘ 實線
‘–’ 破折線
‘-.’ 點劃線
‘:’ 虛線
’ ‘ 無線條
標記字元 說明 標記字元 說明 標記字元 說明
‘.’ 點標記 ‘1’ 下花三角標記 ‘h’ 豎六邊形標記
‘,’ 畫素標記(極小點) ‘2’ 上花三角標記 ‘H’ 橫六邊形標記
‘o’ 實心圏標記 ‘3’ 左花三角標記 ‘+’ 十字形標記
‘v’ 倒三角標記 ‘4’ 右花三角標記 ‘x’ x標記
‘^’ 上三角標記 ’s’ 實心方形標記 ‘D’ 菱形標記
‘>’ 右三角標記 ‘p’ 實心五角標記 ‘d’ 瘦菱形標記
‘<’ 左三角標記 ‘*’ 星形標記
**kwargs: 第二組或更多(x,y,format_string)
color: 控制顏色 如color='green'
linestyle:線條控制 如linestyle='dashed'
marker:標記風格,marker='o'
markerfacecolor:標記顏色,markerfacecolor='blue'
markersize:標記尺寸,markersize=20
...

pyplot的中文顯示

pyplot並不預設支援中文顯示,需要rcParams修改字型實現

全域性設定中文字型

import matplotlib
import matplotlib.pyplot as plt 
matplotlib.rcParams['font.family']='SimHei'
plt.plot([3,1,4,5,2])
plt.ylabel('縱軸值')
plt.savefig('test',dpi=600)
plt.show()

結果如下:

rcParams的屬性

屬性 說明
‘font.family’ 用於顯示字型的名字
‘font.style’ 字型風格,正常’normal’或斜體’italic’
‘font.size’ 字型大小,整數字號或者’large’,’x-small’

中文字型的種類

rcParams[‘font.family’]

中文字型 說明
‘SimHei’ 中文黑體
‘Kaiti’ 中文楷體
‘LiSu’ 中文隸書
‘FangSong’ 中文仿宋
‘YouYuan’ 中文幼圓
STSong 華文宋體

示例:

import matplotlib
import matplotlib.pyplot as plt 
import numpy as np
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.savefig('test',dpi=600)
plt.show()

區域性設定中文字型

在有中文輸出的地方,增加一個屬性:fontproperties

import matplotlib.pyplot as plt 
import numpy as np

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.savefig('test',dpi=600)
plt.show()


注意到,如果設定全域性字型的話,那麼座標軸的字型也被改變,區域性設定中文字型不改變座標軸的字型。

pyplot的文字顯示

pyplot的文字顯示函式

函式 說明
plt.xlabel() 對x軸增加文字標籤
plt.ylabel() 對y軸增加文字標籤
plt.title() 對圖形本整體增加文字標籤
plt.text() 在任意位置增加文字
plt.annotate() 在圖形中增加帶箭頭的註釋

text函式示例

import matplotlib.pyplot as plt 
import numpy as np
a = np.arange(0.0,5.0,0.02)
plt.xlabel('縱軸: 振幅', fontproperties='SimHei', fontsize=20, color = 'green')
plt.ylabel('橫軸: 時間', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波例項$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
plt.text(2,1,r'$\mu=100$',fontsize=15)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.savefig('test',dpi=600)
plt.show()

annotate函式示例

import matplotlib.pyplot as plt 
import numpy as np
a = np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.xlabel('縱軸: 振幅', fontproperties='SimHei', fontsize=20, color = 'green')
plt.ylabel('橫軸: 時間', fontproperties='SimHei', fontsize=20)
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.axis([-1,6,-2,2])
plt.grid()
plt.savefig('test',dpi=600)
plt.show()

http://www.mooc.cn/course/7848.html

相關文章