Matplotlib基本画图之子图

# 子图操作相关函数
plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=, **kwargs)
plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)[source]

1、建立子图后在进行填充

通常情况下 是先建立子图 然后在进行填充子图:

# 先建立子图然后填充图表
# 设置画布大小  面板颜色(见下图)设置为灰色
fig = plt.figure(figsize=(10,6),facecolor = 'gray')
# 添加第一个字图 子图 是 2*2矩阵型的 即设置有四个 1 则表示我们当前选取的是第一个子图
ax1 = fig.add_subplot(2,2,1)
# plt.plot 或者ax1.plot 结果是一样的 因为当前 只有ax1子图 
plt.plot(np.random.rand(50).cumsum(),'k--')  # cumsum是累加的意思 k--,b--表示颜色和线条风格 
plt.plot(np.random.randn(50).cumsum(),'b--') # 参考https://www.cnblogs.com/laumians-notes/p/8268701.html

                                                          Matplotlib基本画图之子图_第1张图片

继续在第二个和第三个子图进行操作,第四个子图我们选择最后一个矩阵框中的子图

ax2 = fig.add_subplot(2,2,2)
# 画直方图
ax2.hist(np.random.rand(50),alpha=0.5)

ax4 = fig.add_subplot(2,2,4) 
# 我们使用pandas建立 数据
df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2,alpha=0.5,linestyle='--',marker='.')

                          Matplotlib基本画图之子图_第2张图片

其中 df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']):

                                                           Matplotlib基本画图之子图_第3张图片

2、使用subplots子图数组填充图标

创建新的figure 返回subplot数组 ,后面通过返回子图数组指定位置 进行对相应子图操作。

# 创建一个新的figure,并返回一个subplot对象的numpy数组 → plt.subplot

fig,axes = plt.subplots(2,3,figsize=(10,4))
# 创建 一个pandas 序列数据
ts = pd.Series(np.random.randn(1000).cumsum())
# 打印 坐标轴、 其行列、 其类型
print(axes, axes.shape, type(axes))
# 生成图表对象的数组
# n拿到 第一行 第二个子图
ax1 = axes[0,1]
# 在当前子图进行画图
ax1.plot(ts)

             Matplotlib基本画图之子图_第4张图片

 

另外,我们也可以进行一些参数调整, 比如,我们需要子图之间 是紧挨着的,共用x轴或者y轴等。

# 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)
        
# wspace,hspace:用于控制宽度和高度的百分比,比如subplot之间的间距
plt.subplots_adjust(wspace=0,hspace=0)

                                                  Matplotlib基本画图之子图_第5张图片

3、多系列子图绘制

plt.plot():

             subplots, 是否分别绘制 系列(子图)

             layout: 绘制子图矩阵,按顺序填充

# 创建数据
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
# 对数据进行累加
df = df.cumsum()
# 进行绘制数据 
# 参数: style:--. 绘图使用的线风格   alpha:0.4 表示绘图透明度  grid表示使用网格 
# figsize:表示画布大小 subplots:表示分别绘制子图 layout:(1,4)表示 1*4 共一行四个 子图画布供使用
# shareX:False表示不共用X轴 
df.plot(style = '--.',alpha = 0.4,grid = True,figsize = (20,8),
       subplots = True,
       layout = (1,4),
       sharex = False)
# 进行挥之系列子图 
plt.subplots_adjust(wspace=0,hspace=0.2)

           Matplotlib基本画图之子图_第6张图片

参考:天池AI Matplotlib数据可视化画图

你可能感兴趣的:(pandas,python,python操作数据,机器学习)