Python matplotlib 设置多子图、子图间距、外边距

Python matplotlib
设置多子图
设置多子图共享xy轴坐标
设置多子图纵向间距
设置多子图横向间距
设置外边距


1. 方式一。设置一个 2*2 的相同尺寸子图,统一添加。

  1. sharex=True 共享X轴,False 不共享X轴(Y轴同理)
  2. sharex='col' 每一列子图共享x轴,sharex='row' 每一行子图共享x轴(Y轴同理)
  3. facecolor 背景填充色。
  4. figsize 图片的大小。
  5. dpi 图片像素
  6. nrows=2, ncols=2, 几行几列,参数名可省略
import matplotlib.pyplot as plt

fig,axes = plt.subplots(2,2,figsize=(6,6),dpi=100,facecolor="w",sharex=True,sharey=False)

# 遍历所有子图
for i,ax in enumerate(axes.flatten()):
    ax.text(0.5, 0.5, i, fontdict={'fontsize':20,})
    
# 对单一子图进行操作    
axes[0,0].set_title('0,0 title')

在这里插入图片描述


2. 方式二。设置一个 2*2 子图,单独添加尺寸相同的子图。

  1. add_subplot 先创建 fig 再单独添加子图。
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(6,6),dpi=100,facecolor="w")

ax1 = fig.add_subplot(2,2,1) # 添加第 1 个子图
ax4 = fig.add_subplot(2,2,4) # 添加第 4 个子图

ax1.text(0.3, 0.5, '2,2,1', fontdict={'fontsize':20,})
ax4.set_title('2,2,4 title')  

在这里插入图片描述


3. 方式三。单独设置尺寸不同的子图。

subplot2grid 单独设置子图所占的行列比例。

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,8),dpi=100,facecolor="w")

# 3*3 的网格;(0,0)位置开始,跨度为 1 行 1 列
ax1 = plt.subplot2grid((3,3),(0,0),colspan=1,rowspan=1)
# 3*3 的网格;(1,0)位置开始,跨度为 1 行 2 列
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
# 3*3 的网格;(1,2)位置开始,跨度为 2 行 1 列
ax3 = plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)

ax1.text(0.1, 0.5, '(0,0) rows 1, cols 1', fontdict={'fontsize':12,})
ax2.text(0.3, 0.5, '(1,0) rows 1, cols 2', fontdict={'fontsize':12,})
ax3.text(0.1, 0.5, '(1,2) rows 2, cols 1', fontdict={'fontsize':12,})

在这里插入图片描述

fig, _ = plt.subplots(figsize=(5, 5))
_.remove() # 移除默认创建的Axes,也可以像上面那样,直接不接收

gs = fig.add_gridspec(ncols=3, nrows=3)

# 按照切片索引随心所欲的生成连续合并的子图区域
ax1 = fig.add_subplot(gs[:, 0])
ax1.text(0.5, 0.5, '1', va='center', ha='center')

ax2 = fig.add_subplot(gs[0, 1:])
ax2.text(0.5, 0.5, '2', va='center', ha='center')

ax2 = fig.add_subplot(gs[1:, 1:])
ax2.text(0.5, 0.5, '3', va='center', ha='center')

fig.subplots_adjust(left=0,right=1,top=1,bottom=0,wspace=0.4,hspace=0.2)

在这里插入图片描述


4. 子图间距调整、子图边距调整

  1. subplots_adjust 调整间距。
  2. 参数 left=0,right=1,top=1,bottom=0, 分别控制 上下左右 的位置。(整体边距)
  3. 参数 wspace=0.4,hspace=0.1 分别控制横向和纵向的子图间距。(子图间距)
import matplotlib.pyplot as plt


fig,axes = plt.subplots(2,2,figsize=(6,4),dpi=100,facecolor="#00CC67")

# 遍历所有子图
for i,ax in enumerate(axes.flatten()):
    ax.text(0.5, 0.5, i+1, fontdict={'fontsize':20,})

# left 控制左边位置;wspace,hspace 控制子图间距
fig.subplots_adjust(left=0,right=1,top=1,bottom=0,wspace=0.4,hspace=0.2)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值