解决python绘图使用subplots出现标题重叠的问题

 更新时间:2021年04月30日 14:12:44   作者:阿正的梦工坊  
这篇文章主要介绍了python绘图使用subplots出现标题重叠的问题及解决方法,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

先上图

在这里插入图片描述

遇到的问题

使用plt.subplots(2,2)绘图时,子图的标题和上图重叠,影响观感:

在这里插入图片描述

源代码:

import numpy as np
from scipy import signal
from skimage import data
from matplotlib import pyplot as plt

# 定义二维灰度图像的空间滤波函数
def correl2d(img, window):
	# 使用滤波器实现图像的空间相关
	# mode = 'same'表示输出尺寸等于输入尺寸
	# boundary = 'fill'表示滤波前,用常量值填充原始图像的边缘,默认常量值为0
	s = signal.correlate2d(img, window, mode='same', boundary='fill')
	return s.astype(np.uint8)
# img为原始图像
img = data.camera()
# 3*3盒状滤波模板
window_1 = np.ones((3, 3))/(3 ** 2)
# 5*5盒状滤波模板
window_2 = np.ones((5, 5))/(5 ** 2)
# 9*9盒状滤波模板
window_3 = np.ones((9, 9))/(9 ** 2)
# 生成滤波结果
new_img_1 = correl2d(img, window_1)
new_img_2 = correl2d(img, window_2)
new_img_3 = correl2d(img, window_3)
# 显示图像
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
fig, axs = plt.subplots(2, 2)
axs[0, 0].imshow(img, cmap='gray')
axs[0, 0].set_title("摄影师原图")
axs[0, 1].imshow(new_img_1, cmap='gray')
axs[0, 1].set_title("3*3盒状滤波模板")
axs[1, 0].imshow(new_img_2, cmap='gray')
axs[1, 0].set_title("5*5盒状滤波模板")
axs[1, 1].imshow(new_img_3, cmap='gray')
axs[1, 1].set_title("9*9盒状滤波模板")
plt.show()

解决方法

方法1:在plt.show() 之前添加一句:

plt.tight_layout()

函数原型:

matplotlib.pyplot.tight_layout(*, pad=1.08, h_pad=None, w_pad=None, rect=None)

作用:调整subplots子图见的间距

Adjust the padding between and around subplots.

参数:

在这里插入图片描述

参考官方文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.tight_layout.html#matplotlib.pyplot.tight_layout

部分代码:

# 显示图像
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
fig, axs = plt.subplots(2, 2)
axs[0, 0].imshow(img, cmap='gray')
axs[0, 0].set_title("摄影师原图")
axs[0, 1].imshow(new_img_1, cmap='gray')
axs[0, 1].set_title("3*3盒状滤波模板")
axs[1, 0].imshow(new_img_2, cmap='gray')
axs[1, 0].set_title("5*5盒状滤波模板")
axs[1, 1].imshow(new_img_3, cmap='gray')
axs[1, 1].set_title("9*9盒状滤波模板")
plt.tight_layout()
plt.show()

方法1测试结果:

在这里插入图片描述

方法2:在subplots中设置figsize

fig, axs = plt.subplots(2, 2,figsize=(6, 15))
# 显示图像
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
# 设置figsize,防止图片重叠
fig, axs = plt.subplots(2, 2,figsize=(6, 15))
axs[0, 0].imshow(img, cmap='gray')
axs[0, 0].set_title("摄影师原图")
axs[0, 1].imshow(new_img_1, cmap='gray')
axs[0, 1].set_title("3*3盒状滤波模板")
axs[1, 0].imshow(new_img_2, cmap='gray')
axs[1, 0].set_title("5*5盒状滤波模板")
axs[1, 1].imshow(new_img_3, cmap='gray')
axs[1, 1].set_title("9*9盒状滤波模板")

方法2测试结果:

在这里插入图片描述

参考

[1]https://blog.csdn.net/txh3093/article/details/106401484

到此这篇关于python绘图使用subplots出现标题重叠的解决方法的文章就介绍到这了,更多相关python使用subplots绘图标题重叠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫使用正则爬取网站的实现

    python爬虫使用正则爬取网站的实现

    这篇文章主要介绍了python爬虫使用正则爬取网站的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • python利用tkinter实现图片格式转换的示例

    python利用tkinter实现图片格式转换的示例

    这篇文章主要介绍了python利用tkinter实现图片格式转换,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • 对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解

    今天小编就为大家分享一篇对python以16进制打印字节数组的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • django中类属性和类方法的实现

    django中类属性和类方法的实现

    在django中,类的属性可以直接在实例化对象或类中调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • TensorFlow2.1.0最新版本安装详细教程

    TensorFlow2.1.0最新版本安装详细教程

    TensorFlow是一款优秀的深度学习框架,支持多种常见的操作系统,对大家的学习或工作具有一定的参考借鉴价值,这篇文章主要介绍了TensorFlow2.1.0最新版本安装详细教程,需要的朋友可以参考下
    2020-04-04
  • 苹果Macbook Pro13 M1芯片安装Pillow的方法步骤

    苹果Macbook Pro13 M1芯片安装Pillow的方法步骤

    Pillow作为python的第三方图像处理库,提供了广泛的文件格式支持,本文主要介绍了苹果Macbook Pro13 M1芯片安装Pillow,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • 详解django的serializer序列化model几种方法

    详解django的serializer序列化model几种方法

    序列化是将对象状态转换为可保持或传输的格式的过程。这篇文章主要介绍了详解django的serializer序列化model几种方法。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 详解Python执行py文件是否需要可执行权限

    详解Python执行py文件是否需要可执行权限

    这篇文章主要通过几个案例为大家详细介绍一下在Python中执行py文件是否需要可执行权限,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以了解一下
    2023-03-03
  • 深入了解Python iter() 方法的用法

    深入了解Python iter() 方法的用法

    这篇文章主要介绍了深入了解Python iter() 方法的知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 基于python的opencv图像处理实现对斑马线的检测示例

    基于python的opencv图像处理实现对斑马线的检测示例

    这篇文章主要介绍了基于python的opencv图像处理实现对斑马线的检测示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论