Matplotlib 教程
Matplotlib 是 Python 的繪圖庫,它能讓使用者很輕松地將資料圖形化,并且提供多樣化的輸出格式,
Matplotlib 可以用來繪制各種靜態,動態,互動式的圖表,
Matplotlib 是一個非常強大的 Python 畫圖工具,我們可以使用該工具將很多資料通過圖表的形式更直觀的呈現出來,
Matplotlib 可以繪制線圖、散點圖、等高線圖、條形圖、柱狀圖、3D 圖形、甚至是圖形影片等等,
安裝 matplotlib 庫:
python3 -m pip install -U matplotlib
一、Matplotlib Pyplot
Pyplot 是 Matplotlib 的子庫,提供了和 MATLAB 類似的繪圖 API,
Pyplot 是常用的繪圖模塊,能很方便讓用戶繪制 2D 圖表,
Pyplot 包含一系列繪圖函式的相關函式,每個函式會對當前的影像進行一些修改,例如:給影像加上標記,生新的影像,在影像中產生新的繪圖區域等等,
plot() 用于畫圖它可以繪制點和線,語法格式如下:
# 畫單條線 plot([x], y, [fmt], *, data=https://www.cnblogs.com/komorebiZjh/p/None, **kwargs) # 畫多條線 plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
引數說明: x, y:點或線的節點,x 為 x 軸資料,y 為 y 軸資料,資料可以串列或陣列, fmt:可選,定義基本格式(如顏色、標記和線條樣式), **kwargs:可選,用在二維平面圖上,設定指定屬性,如標簽,線的寬度等,
二、Matplotlib 繪圖示記
繪圖程序如果我們想要給坐標自定義一些不一樣的標記,就可以使用 plot() 方法的 marker 引數來定義,
1、marker 可以定義的符號如下
| 標記 | 符號 | 描述 |
|---|---|---|
| "." | ![]() |
點 |
| "," | ![]() |
像素點 |
| "o" | ![]() |
實心圓 |
| "v" | ![]() |
下三角 |
| "^" | ![]() |
上三角 |
| "<" | ![]() |
左三角 |
| ">" | ![]() |
右三角 |
| "1" | ![]() |
下三叉 |
| "2" | ![]() |
上三叉 |
| "3" | ![]() |
左三叉 |
| "4" | ![]() |
右三叉 |
| "8" | ![]() |
八角形 |
| "s" | ![]() |
正方形 |
| "p" | ![]() |
五邊形 |
| "P" | ![]() |
加號(填充) |
| "*" | ![]() |
星號 |
| "h" | ![]() |
六邊形 1 |
| "H" | ![]() |
六邊形 2 |
| "+" | ![]() |
加號 |
| "x" | ![]() |
乘號 x |
| "X" | ![]() |
乘號 x (填充) |
| "D" | ![]() |
菱形 |
| "d" | ![]() |
瘦菱形 |
| "|" | ![]() |
豎線 |
| "_" | ![]() |
橫線 |
| 0 (TICKLEFT) | ![]() |
左橫線 |
| 1 (TICKRIGHT) | ![]() |
右橫線 |
| 2 (TICKUP) | ![]() |
上豎線 |
| 3 (TICKDOWN) | ![]() |
下豎線 |
| 4 (CARETLEFT) | ![]() |
左箭頭 |
| 5 (CARETRIGHT) | ![]() |
右箭頭 |
| 6 (CARETUP) | ![]() |
上箭頭 |
| 7 (CARETDOWN) | ![]() |
下箭頭 |
| 8 (CARETLEFTBASE) | ![]() |
左箭頭 (中間點為基準) |
| 9 (CARETRIGHTBASE) | ![]() |
右箭頭 (中間點為基準) |
| 10 (CARETUPBASE) | ![]() |
上箭頭 (中間點為基準) |
| 11 (CARETDOWNBASE) | ![]() |
下箭頭 (中間點為基準) |
| "None", " " or "" | 沒有任何標記 | |
| '$...$' | ![]() |
渲染指定的字符,例如 "$f$" 以字母 f 為標記, |
2、線型別:線的型別可以使用 linestyle 引數來定義,簡寫為 ls,
'‐' 實線,'‐‐' 破折線,'‐.' 點劃線,':' 虛線,
線的顏色可以使用 color 引數來定義,
線的寬度可以使用 linewidth 引數來定義,簡寫為 lw,值可以是浮點數,如:1、2.0、5.67 等,
3、fmt 引數:fmt 引數定義了基本格式,如標記、線條樣式和顏色,
#fmt = '[marker][line][color]'
import matplotlib.pyplot as plt import numpy as np ypoints = np.array([6, 2, 13, 10]) plt.plot(ypoints, 'o:r') plt.show()
4、使用 xlabel() 和 ylabel() 方法來設定 x 軸和 y 軸的標簽,
5、使用 title() 方法來設定標題,
6、使用 pyplot 中的 grid() 方法來設定圖表中的網格線,
grid() 方法語法格式如下:
matplotlib.pyplot.grid(b=None, which='major', axis='both', )
引數說明:
- b:可選,默認為 None,可以設定布林值,true 為顯示網格線,false 為不顯示,如果設定 **kwargs 引數,則值為 true,
- which:可選,可選值有 'major'、'minor' 和 'both',默認為 'major',表示應用更改的網格線,
- axis:可選,設定顯示哪個方向的網格線,可以是取 'both'(默認),'x' 或 'y',分別表示兩個方向,x 軸方向或 y 軸方向,
- **kwargs:可選,設定網格樣式,可以是 color='r', linestyle='-' 和 linewidth=2,分別表示網格線的顏色,樣式和寬度,
三、折線圖
使用 pyplot 中的 plot()方法來繪制散點圖,
import numpy as np
import matplotlib.pyplot as plt
y = np.array([1,3,4,6,7,9,11,5,8])
y2 = np.array([16,18,15,8,5,11,12])
plt.plot(y,'*:b',linestyle= '-.',linewidth='1')
plt.xlabel('Xname')#設定x軸名字
plt.ylabel('Yname')
plt.title('title')#設定標題
plt.grid(color = 'r', linestyle = '--', linewidth = 0.5)#設定網格線
plt.show()#顯示
四、散點圖
使用 pyplot 中的 scatter() 方法來繪制散點圖,
scatter() 方法語法格式如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=https://www.cnblogs.com/komorebiZjh/p/None, **kwargs)
引數說明:
x,y:長度相同的陣列,也就是我們即將繪制散點圖的資料點,輸入資料, s:點的大小,默認 20,也可以是個陣列,陣列每個引數為對應點的大小, c:點的顏色,默認藍色 'b',也可以是個 RGB 或 RGBA 二維行陣列, marker:點的樣式,默認小圓圈 'o', cmap:Colormap,默認 None,標量或者是一個 colormap 的名字,只有 c 是一個浮點數陣列的時才使用,如果沒有申明就是 image.cmap, norm:Normalize,默認 None,資料亮度在 0-1 之間,只有 c 是一個浮點數的陣列的時才使用, vmin,vmax::亮度設定,在 norm 引數存在時會忽略, alpha::透明度設定,0-1 之間,默認 None,即不透明, linewidths::標記點的長度, edgecolors::顏色或顏色序列,默認為 'face',可選值有 'face', 'none', None, plotnonfinite::布林值,設定是否使用非限定的 c ( inf, -inf 或 nan) 繪制點, **kwargs::其他引數,
例如:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.subplot(2, 2, 1)
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
plt.scatter(x, y, s=sizes,c=colors,marker='*',alpha=0.5)
五、柱形圖
使用 pyplot 中的 bar() 方法來繪制柱形圖,
bar() 方法語法格式如下:
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=https://www.cnblogs.com/komorebiZjh/p/None, **kwargs)
引數說明:
x:浮點型陣列,柱形圖的 x 軸資料, height:浮點型陣列,柱形圖的高度, width:浮點型陣列,柱形圖的寬度, bottom:浮點型陣列,底座的 y 坐標,默認 0,
align:柱形圖與 x 坐標的對齊方式,'center' 以 x 位置為中心,這是默認值, 'edge':將柱形圖的左邊緣與 x 位置對齊,
要對齊右邊緣的條形,可以傳遞負數的寬度值及 align='edge',
**kwargs::其他引數,
例如:
import matplotlib.pyplot as plt import numpy as np x = np.array(['張三','李四','王五','趙柳','王麻子','張無忌','趙敏','金毛獅王']) heights= np.array( [1,2,4,5,6,4,3,1]) colors = np.array(['red','blue','green']) plt.bar(x=x,height=heights,width=0.3,color=colors,align='edge') plt.show()
六、扇形圖
使用 pyplot 中的 pie() 方法來繪制餅圖,
pie() 方法語法格式如下:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True,
wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None,
data=https://www.cnblogs.com/komorebiZjh/p/None)[source]
引數說明:
x:浮點型陣列,表示每個扇形的面積, explode:陣列,表示各個扇形之間的間隔,默認值為0, labels:串列,各個扇形的標簽,默認值為 None, colors:陣列,表示各個扇形的顏色,默認值為 None, autopct:設定餅圖內各個扇形百分比顯示格式,%d%% 整數百分比,%0.1f 一位小數, %0.1f%% 一位小數百分比, %0.2f%% 兩位小數百分比, labeldistance:標簽標記的繪制位置,相對于半徑的比例,默認值為 1.1,如 <1則繪制在餅圖內側, pctdistance::類似于 labeldistance,指定 autopct 的位置刻度,默認值為 0.6, shadow::布林值 True 或 False,設定餅圖的陰影,默認為 False,不設定陰影, radius::設定餅圖的半徑,默認為 1, startangle::起始繪制餅圖的角度,默認為從 x 軸正方向逆時針畫起,如設定 =90 則從 y 軸正方向畫起, counterclock:布林值,設定指標方向,默認為 True,即逆時針,False 為順時針, wedgeprops :字典型別,默認值 None,引數字典傳遞給 wedge 物件用來畫一個餅圖,
例如:wedgeprops={'linewidth':5} 設定 wedge 線寬為5, textprops :字典型別,默認值為:None,傳遞給 text 物件的字典引數,用于設定標簽(labels)和比例文字的格式, center :浮點型別的串列,默認值:(0,0),用于設定圖示中心位置, frame :布爾型別,默認值:False,如果是 True,繪制帶有表的軸框架, rotatelabels :布爾型別,默認為 False,如果為 True,旋轉每個 label 到指定的角度,
例如:
import matplotlib.pyplot as plt import numpy as np y = np.array([20,15, 25, 25, 15]) plt.pie(y, labels=['guitar','saxophone','piano','violin','others'], # 設定餅圖示簽 colors=["#d5695d",'#852625', "#5d8ca8", "#65a479", "#a564c9"], # 設定餅圖顏色 explode=(0, 0, 0.2, 0,0), # 第二部分突出顯示,值越大,距離中心越遠 autopct='%.2f%%', # 格式化輸出百分比 ) plt.title("musical instruments") # 設定標題 plt.show()
七、繪制多圖
使用subplot()函式繪制多個子圖
subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(**kwargs) subplot(ax)
以上函式將整個繪圖區域分成 nrows 行和 ncols 列,編號可以通過引數 index 來設定,
設定 numRows = 1,numCols = 2,就是將圖表繪制成 1x2 的圖片區域, 對應的坐標為: (1, 1), (1, 2)
plotNum = 1, 表示的坐標為(1, 1), 即第一行第一列的子圖, plotNum = 2, 表示的坐標為(1, 2), 即第一行第二列的子圖,
例如:
import numpy as np import matplotlib.pyplot as plt # plot1 y = np.array([1, 3, 4, 6, 7, 9, 11, 5, 8]) plt.subplot(3, 3, 5) plt.plot(y, '*:b', linestyle='-.') plt.title('plot1') # plot2 y2 = np.array([16, 18, 15, 8, 5, 11, 12]) plt.subplot(3, 3, 9) plt.plot(y2, 'r:s', linestyle='-.') plt.title('plot2') plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470566.html
標籤:Python






































