• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解决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中使用sys模板和logging模块获取行号和函数名的方法
    • python绘图subplots函数使用模板的示例代码
    上一篇:python数据库批量插入数据的实现(executemany的使用)
    下一篇:教你怎么用Python处理excel实现自动化办公
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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