# 子图操作相关函数
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]
通常情况下 是先建立子图 然后在进行填充子图:
# 先建立子图然后填充图表
# 设置画布大小 面板颜色(见下图)设置为灰色
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
继续在第二个和第三个子图进行操作,第四个子图我们选择最后一个矩阵框中的子图
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='.')
其中 df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']):
创建新的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)
另外,我们也可以进行一些参数调整, 比如,我们需要子图之间 是紧挨着的,共用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)
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)
参考:天池AI Matplotlib数据可视化画图