Python數據分析實戰【第三章】3.5-Matplotlib子圖【python】

【課程3.5】 子圖

在matplotlib中,整個圖像爲一個Figure對象
在Figure對象中可以包含一個或者多個Axes對象
每個Axes(ax)對象都是一個擁有自己座標系統的繪圖區域

plt.figure, plt.subplot

1.plt.figure() 繪圖對象

# plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, 
# frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, **kwargs)

fig1 = plt.figure(num=1,figsize=(4,2))
plt.plot(np.random.rand(50).cumsum(),'k--')

fig2 = plt.figure(num=2,figsize=(4,2))
plt.plot(50-np.random.rand(50).cumsum(),'k--')
# num:圖表序號,可以試試不寫或都爲同一個數字的情況,圖表如何顯示
# figsize:圖表大小

# 當我們調用plot時,如果設置plt.figure(),則會自動調用figure()生成一個figure, 嚴格的講,是生成subplots(111)

在這裏插入圖片描述

2.子圖創建1 - 建立子圖填充圖表


fig = plt.figure(figsize=(10,6),facecolor = 'gray')

ax1 = fig.add_subplot(2,2,1)  # 第一行的左圖
ax1 .plot(np.random.rand(50).cumsum(),'k--')
ax1 .plot(np.random.randn(50).cumsum(),'b--')
# 先創建圖表figure,然後生成子圖,(2,2,1)代表創建2*2的矩陣表格,然後選擇第一個,順序是從左到右從上到下
# 創建子圖後繪製圖表,會繪製到最後一個子圖

ax2 = fig.add_subplot(2,2,2)  # 第一行的右圖
ax2.hist(np.random.rand(50),alpha=0.5)

ax4 = fig.add_subplot(2,2,4)  # 第二行的右圖
df2= = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2=,alpha=0.5,linestyle='--',marker='.')
# 也可以直接在子圖後用圖表創建函數直接生成圖表

在這裏插入圖片描述

3.子圖創建2 - 創建一個新的figure,並返回一個subplot對象的numpy數組 → plt.subplot

fig,axes = plt.subplots(2,3,figsize=(10,4))
ts = pd.Series(np.random.randn(1000).cumsum())

print(axes, axes.shape, type(axes))
# 生成圖表對象的數組

axes[0,1].plot(ts)

在這裏插入圖片描述

在這裏插入圖片描述

4.plt.subplots,參數調整

fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
# sharex,sharey:是否共享x,y刻度

for i in range(2):
    for j in range(2):
        axes[i,j].hist(np.random.randn(500),color='k',alpha=0.5)
plt.subplots_adjust(wspace=0,hspace=0)
# wspace,hspace:用於控制寬度和高度的百分比,比如subplot之間的間距

在這裏插入圖片描述

5.子圖創建3 - 多系列圖,分別繪製


df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot(style = '--.',alpha = 0.4,grid = True,figsize = (8,8),
       subplots = True,
       layout = (2,3),
       sharex = False)
plt.subplots_adjust(wspace=0,hspace=0.2)
# plt.plot()基本圖表繪製函數 → subplots,是否分別繪製系列(子圖)
# layout:繪製子圖矩陣,按順序填充

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章