-
Matplotlib安裝
cmd輸入:pip install Matplotlib
點我進入Matplotlib官網
-
畫布(fig)與子圖(ax)
需要導入:
form matplotlib import pyplt as plt
plt.figure(figsize,dpi)
建立畫布
plt.figure(屬性) | |
---|---|
figsize = (widtht,hight) | 設定畫布寬度和高度 |
dpi | 畫布透明度 |
plt.subplot(x y index)
建立子圖
plt.subplot(屬性) | |
---|---|
x | 行數 |
y | 列數 |
index | 索引(從1開始,從左往右,從上往下) |
plt.subplots(nrows, ncols, sharex = False, sharey = False)
建立畫布和子圖
傳回值:fig,ax
plt.subplots(屬性) | |
---|---|
nrows | 子圖的行數 |
ncols | 子圖的列數 |
sharex | 所有子圖使用相同的x軸刻度 |
sharey | 所有子圖使用相同的y軸刻度 |
通用方法 | |
---|---|
plt.figure(figsize=None,dpi=None) | 生成新的畫布,figsize:畫布大小(傳參:元組),dpi:透明度 |
plt.savefig(fname) | 儲存圖檔,fname:儲存圖檔位置 |
plt.xticks(ticks=None,lables=None) | ticks:設定x軸刻度的值,labels:刻度标簽 |
plt.yticks(ticks=None,lables=None) | ticks:設定y軸刻度的值,labels:刻度标簽 |
plt.xlabel(xlabel) | 設定x軸标簽 |
plt.ylabel(ylabel) | 設定y軸标簽 |
plt.title() | 設定圖示題 |
plt.grid() | 根據x軸和y軸的數值展示軸網格 |
plt.legend(prop) | 顯示圖例标簽,prop:局部字型設定 |
plt.annotate(text,xy,xytext,arrowprops = {}) | 資料标簽,text:文本标簽,xy:标點位置(元組),xytext:文本位置(元組),arrowprops:箭頭設定 |
plt.show() | 釋放空間,并顯示已繪制的圖 |
plt.subplots_adjust(wspace,hspace) | 調整子圖之間的間距,wspace(左右間距),hspace(上下間距) |
zip() 函數
作用:用于生成坐标
zip(x,y)
生成坐标(x,y必須數量一緻)
zip(屬性) | |
---|---|
x | x軸上的位置 |
y | y軸上的位置 |
-
中文顯示問題
解決方法:
方法一:
import matplotlib
font = {
'family':'SimHei',
'weight':'bold',
'size':12
}
matplotlib.rc("font", **font)
方法二:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字型)
plt.rcParams['axes.unicode_minus'] = False # 步驟二(解決坐标軸負數的負号顯示問題)
方法三:
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
x = [1,2,3,4]
y = [3,2,1,3]
plt.plot(x,y)
plt.xlabel("x軸标簽",fontproperties=font)
plt.show()
-
折線圖
折線圖以折線的上升或下降來表示統計數量的增減變化的統計圖
特點:能夠顯示資料的變化趨勢,反映事物的變化情況
折線圖可以通過plt.plot()函數來繪制
plt.plot(x,y,color,linestyle,marker,label)
構件折線圖
(x,y元素必須一緻)
plt.plot(屬性) | |
---|---|
x | 在x軸上的點 |
y | 在y軸上的點 |
color | 設定線的顔色 |
linestyle | 設定線的樣式 |
marker | 标記樣式 |
label | 圖例标簽 |
-
散點圖
散點圖用兩組資料構成多個坐标點,考察坐标點的分布,判斷兩變量之間是否存在某種關聯或總結坐标點的分布模式
特點:判斷變量之間是否存在數量關聯趨勢,表示離群點(分布規律)
散點圖通過plt.scatter() 函數
plt.scatter(x,y)
來構件散點圖
plt.scatter(屬性) | |
---|---|
x | 在x軸上的點 |
y | 在y軸上的點 |
-
柱狀圖及條形圖
條形圖是用寬度相同的條形的高度或長短來表示資料多少的圖形。條形圖可以橫置或縱置,縱置時也稱為柱形圖。
特點:1.能夠使人們一眼看出各個資料的大小。
2.易于比較資料之間的差别。
通過 plt.bar() 方法繪制柱狀圖, plt.barh() 方法繪制條形圖
plt.bar(x,height,width = 0.8,bottom,align = "center")
建構 柱狀圖
plt.bar(屬性) | |
---|---|
x | 在x軸上的位置 |
height | 在y軸上的高度 |
width = 0.8 | 柱子的寬度 |
bottom = “None” | 柱子底部的起始位置 |
align = “center” | 校準位置 |
plt.barh(y,width,height = 0.8,align = "center")
建構 條形圖
bar.barh(屬性) | |
---|---|
y | 在x軸上的長度 |
width | 在y軸上的位置 |
height | 柱子的寬度 |
align = “center” | 校準位置 |
-
直方圖
直方圖由一系列高度不等的縱向條紋或線段表示資料分布的情況,一般用橫軸表示資料範圍,縱軸表示分布情況
特點:繪制連續性的資料,展示一組或者多組資料的分布情況(統計)
通過 plt.hist() 方法繪制
plt.hist(x,bins = None,density =False)
建構圖形
plt.hist(屬性) | |
---|---|
x | 在x軸上的位置 |
bins = None | 組數(預設為10) |
density = False | 頻率(預設為頻數) |
-
扇形圖
扇形圖,用整個圓表示總數,用圓内各個扇形的大小表示各部分數量占總數的百分數。
通過 plt.pie() 方法繪制
plt.pie(x, explode=None, labels=None,autopct=None,shadow=False)
建構圖形
plt.pie(屬性) | |
---|---|
x | 扇形資料 |
explode = None | 設定某幾個分塊是否要分離餅圖 |
labels = None | 每塊扇形标簽 |
autopct = None | 百分比資料标簽 |
shadow = False | 是否顯示陰影 |
plt.pie傳回值 | |
---|---|
patchs | 繪制餅圖每塊對象 |
texts | 文本清單 |
autotexts | 百分比的文本清單 |
-
箱型圖
箱線圖是一種直覺簡潔的方式去呈現一組資料的分布。 箱線圖廣泛用于各個資料分析領域,它能非常簡單明了地顯示一組資料中5個重要數值,并且還能發現一組資料中的存在的異常值。
五個重要數值 | ||||
---|---|---|---|---|
最大值 | 最小值 | 中位數 | 下四分位數 | 上四分位數 |
通過 plt.boxplot() 方法繪制
ply.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,labels=None,meanline=None,showmeans=None)
建構圖形
plt.boxplot(屬性) | |
---|---|
x | 需要繪制的箱型圖的資料 |
notch = None | 是否展示置信區間 預設為False |
sym = None | 代表異常點的符号表示 預設為圓點 |
vert = None | 是否是垂直的 預設是True |
whis = None | 上下限系數 預設為1.5 |
positions = None | 設定每個盒子的位置 |
widths = None | 設定每個盒子的寬度 |
labels = None | 每個盒子的label |
meanline和showmean | 都為True的時候 會展示平均線 |
-
雷達圖
雷達圖(Radar Chart)又被叫做蜘蛛網圖,适用于顯示三個或更多的次元的變量的強弱情況。比如某個企業在哪些業務方面的投入等,都可以用雷達圖友善的表示。
用過 plt.polar() 來繪制
plt.polar(theta,r)
來建構圖形
plt.polar | |
---|---|
theta | 分割區塊 |
r | 資料 |
(區塊和資料個數必須相等)
-
Axes (子畫)
Axes容器是用來建立具體的圖形的。比如畫曲線,柱狀圖,都是畫在上面。是以之前我們學的使用plt.xx繪制各種圖形(比如條形圖,直方圖,散點圖等)都是對Axes的封裝
方法 | |
---|---|
axes.set_xlim(min,max) | 限制x軸的範圍 |
axes.set_ylim(min,max) | 限制y軸的範圍 |
axes.text(x,y,text) | 在坐标位置标注文本 |
axes.set_xlabel(text) | 設定x軸文本标簽 |
axes.set_ylabel(text) | 設定y軸文本标簽 |
axes.twinx() | 共享x軸 |
axes.twiny() | 共享y軸 |
axes.minorticks_on() | 顯示x與y軸的子刻度 |
-
Axis(軸)
Axis代表的是x軸或者y軸的對象。包含Tick(刻度)對象,TickLabel刻度文本對象,以及AxisLabel坐标軸文本對象。axis對象有一些方法可以操作刻度和文本等。
axis: xaxis,yaxis
方法 | |
---|---|
axes.axis.set_label_coords(x,y) | 設定x或y軸的文本标簽位置 |
自定義刻度格式
from matplotlib import ticker
formatter = ticker.FormatStrFormatter("自定義格式")
ax1.yaxis.set_major_formatter(formatter)
- 多圖布局
調整子圖間距
fig.tight_layout(h_pad=None,v_pad=None)
(不傳參,預設自動調整)
fig.tight_layout(屬性) | |
---|---|
h_pad | 上下間距 |
v_pad | 左右間距 |
自定義布局
方法一:
from matplotlib import pyplot as plt
plt.figure()
plt.subplot(221)
plt.subplot(223)
plt.subplot(122)

方法二:
fig.add_gridspec(nrows=1, ncols=1,width_ratios,height_ratios)
建立栅欄模式
fig.add_gridspec(屬性) | |
---|---|
nrows | 行 |
nclos | 列 |
width_ratios | 寬的比值 |
height_ratios | 高的比值 |
from matplotlib import pyplot as plt
fig = plt.figure()
gs = fig.add_gridspec(2,2)
fig.add_subplot(gs[0,:])
fig.add_subplot(gs[1,0])
fig.add_subplot(gs[1,1])