使用Python的matplotlib设置多子图方法

1.方法一:

使用plt.subplots()统一添加多个子图

import matplotlib.pyplot as plt

# 设置一个2*2、尺寸为6x6,清晰度为100,背景颜色为白色,共享x与y轴的子图
# fig是一个图形对象,代表整个图形窗口,在该窗口中可以放多个绘图区域。
# axes是一个二维numpy数组,包含N个子图对象,可以在它们各自的区域内进行绘图
fig,axes = plt.subplots(nrows=2,ncols=2,figsize=(6,6),dpi=100,facecolor='w',sharex=True,sharey=True)

# 为子图添加数据标签
# zip()函数将两个列表对象中元素对应打包一个个元组
for a,b in zip(['a','b','c','d'],[1,2,3,4]):
    axes[0,0].text(a,b,b)
for a,b in zip(['a','b','c','d'],[5,2,3,4]):
    axes[0,1].text(a,b,b)

# 为每个子图绘图
axes[0,0].plot(['a','b','c','d'],[1,2,3,4])
axes[0,1].plot(['a','b','c','d'],[5,2,3,4])

# 为每个子图添加局部标题
axes[0,0].set_title('I Am Title')
axes[0,1].set_title('I Am Title')

# 添加全局标题
fig.suptitle('My Multi subplot Figure')
plt.show()

2.方法二:

使fig.add_subplot()指定位置添加子图

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

# add_subplot()是figure的一个方法,可以向已存在的figure里添加
ax1 = fig.add_subplot(2,2,1)  # 二维矩阵的第一个位置
ax1.plot(['a','b','c','d'],[1,2,3,4])
ax1.set_title('title')

ax2 = fig.add_subplot(2,2,4)
ax2.plot(['a','b','c','d'],[1,2,3,4])  # 二维矩阵的第四个位置
ax2.set_title('title')

plt.show()

3.方法三:

使用plt.subplot()指定位置添加子图

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

# plt.subplot()是matplotlib的内置函数,可以在当前figure上创建子图
plt.subplot(221)
plt.plot(['a','b','c','d'],[1,2,3,4])
plt.title('title A')

plt.subplot(223)
plt.plot(['a','b','c','d'],[1,2,3,4])
plt.title('title C')

plt.show()

 plt.subplot()合适快速创建子图。

4.多子图的微调

如下图,子图之间间距太小了,我们可以使用subplots_adjust()来调整间距。

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

plt.subplot(221)
plt.plot(['a','b','c','d'],[1,2,3,4])
plt.title('title A')

plt.subplot(222)
plt.plot(['a','b','c','d'],[1,3,8,6])
plt.title('title B')

plt.subplot(223)
plt.plot(['a','b','c','d'],[1,2,3,4])
plt.title('title C')

plt.subplot(224)
plt.plot(['a','b','c','d'],[6,5,1,4])
plt.title('title D')

# 前四个参数是子图距父窗口边缘的距离,wspace和hspace分别为子图之间的水平和垂直间距
fig.subplots_adjust(left=0.1,right=0.9,top=0.8,bottom=0.1,wspace=0.3,hspace=0.5)
fig.suptitle('Big Title',fontsize=20)

plt.show()

 

5.小结

 plt.subplots()和fig.add_subplot()合适需要更精细控制的情况(因为获取到子图对象),而plt.subplot()合适快速创建子图。

使用fig.subplots_adjust()调节间距,设置参数时需要注意left/bottom不可大于或等于right/top。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值