python-matplotlib绘图 -应用subplots_adjust()方法调整图表、画布间距

文章目录

  • 1.问题情境
  • 2. plt.subplots_adjust()概述
  • 3. 案例展示
    • 3.1 单图情形
    • 3.2 多子图情形

      ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ
                 
    ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ


大家好,我是侯小啾!

今天分享的内容是,如何在使用python 的 matplotlib库绘图时, 使用subplots_adjust()方法来调整图表与画布之间的间距。以及图表与图表之间的间距。


1.问题情境

我们使用python的 matplotlib库绘图时,可能会遇到图片内容显示不全的情况,
以下边代码为例:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y)-min(y))
plt.plot(x, y, label='股票A收盘价', c='k', ls='-.', marker='D', lw=2)
plt.xticks(x, ['2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30','2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05','2022-04-06'], rotation=45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()# 标出每天的收盘价
for a, b in zip(x, y):plt.text(a, b+0.01, '%.1f'%b, ha='center', va='bottom', fontsize=9)plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 2, min(y)+0.06), xycoords='data',arrowprops=dict(width=3,headwidth=10,headlength=20, facecolor='g',shrink=0.05), c='r',fontsize=20)
plt.show()

图像效果如图所示,图像底部x轴的表示日期的标签,没有被显示完全:
     
虽然,有的知道的同学可能会告诉我,只要把窗口放大,就可以显示得完整了。确实如此。但是这仅仅只能满足我们的一般需求。如果我们的程序需要自动化生成图表并保存,这个方法就失效了。使用plt.savefig()保存出的图片文件如下图所示,这并不是我们想要的:


这样的场景下,subplots_adjust()方法的应用则恰到好处。


2. plt.subplots_adjust()概述

plt.subplots_adjust()方法常用的参数有6个。

其语法如下:

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

其中,left, bottom, right, top依次表示四个方向上的,图表与画布边缘之间的距离。

这四个参数的每个参数的取值范围通常都在0-1之间。与其说是“间距”,倒不如说是图像边缘的“坐标”更确切。使用这四个参数时,将画布左下角视为坐标原点,画布的宽和高都视为1。如果参数取值大于1,则可能会出现图像的损失,图像会移动到画布之外,而不会报错。
且left不能大于等于right,bottom不能大于等于top,如果违反这一点则会发生报错。

wspace和 hspace则分别表示水平方向上图像间的距离和垂直方向上图像间的距离。其的取值是可以取得大于1,具体的则具体情形自行调试选出合适的。这两个参数用于画布有多个子图时。


3. 案例展示

3.1 单图情形

依然以第一部分中的示例为例,将表示图表与下边缘的距离 的参数 bottom设成0.2。

即在上边代码的基础上加上一句:

plt.subplots_adjust(bottom=0.2)

则图像效果发生以下改变:

        


3.2 多子图情形

在画布上绘制以下四幅图像。并设定上下左右及图像间的间距。
依次在左上绘制一幅折线图,右上绘制一幅散点图,
左下绘制一幅柱状图,右下绘制一幅箱线图。
并设定间距:
plt.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9, wspace=0.3, hspace=0.3)

代码如下:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 位置221 画一幅简单的折线图
fig = plt.figure(1, facecolor='#33ff99', figsize=(10, 6))
ax1 = plt.subplot(221)
ax1.set_title('ax1')
ax1.set_facecolor("orange")
ax1.plot([1, 1, 0, 0, -1, 0, 1, 1, -1], c='r')
# 位置222 或一个横轴为月份,的散点图
ax2 = plt.subplot(222)
ax2.set_title('ax2')
ax2.set_facecolor("purple")
ax2.plot(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月'], [1, 0, 2, 5, 3, 5, 8, 7, 9], ls='', marker='*')
# 位置223 绘制一份柱状图
ax3 = plt.subplot(223)
ax3.set_title('ax3')
ax3.set_facecolor("pink")
ax3.bar(['A类', 'B类', 'C类', 'D类', 'E类'], height=[200, 350, 600, 540, 430], color='#9900ff')
# 位置224 绘制一张箱线图
ax4 = plt.subplot(224)
ax4.set_title('ax4')
np.random.seed(100)
data = np.random.randint(0, 100, (4, 4))
ax4.set_facecolor("blue")
ax4.boxplot(data, labels=('Open', 'High', 'Low', 'Close'))
# 添加标题
ax1.set_title('折线图')
ax2.set_title('散点图')
ax3.set_title('柱形图')
ax4.set_title('箱线图')
plt.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9, wspace=0.3, hspace=0.3)
plt.show()

生成图像效果如下:
       


本次分享就到这里,小啾感谢您的关注与支持!

python-matplotlib绘图 -应用subplots_adjust()方法解决图表与画布的间距问题相关推荐

  1. python画图显示不了中文_完美解决Python matplotlib绘图时汉字显示不正常的问题

    Matplotlib是一个很好的作图软件,但是python下默认不支持中文,所以需要做一些修改,方法如下: 1.在python安装目录的Lib目录下创建ch.py文件. 文件中代码为: 保存,以后通过 ...

  2. python 3d绘图 汉字_完美解决Python matplotlib绘图时汉字显示不正常的问题

    Matplotlib是一个很好的作图软件,但是python下默认不支持中文,所以需要做一些修改,方法如下: 1.在python安装目录的Lib目录下创建ch.py文件. 文件中代码为: 保存,以后通过 ...

  3. 解决 Python Matplotlib 绘图时不连续x轴自动补全的问题(xsticks)

    问题 发现一个奇怪的问题,记录一下: 用 Python Matplotlib绘图的时候,x轴为不连续的日期,但是画出来的图,对于不连续的部分x轴会自动补全,空出来的部分是没有值的.(x轴数据明明是明确 ...

  4. Python+matplotlib绘图时显示中文的设置方法

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: =================== 在使用Python+mat ...

  5. Python Matplotlib绘图的正确打开方式

    Python Matplotlib绘图的正确打开方式 文章目录 Python Matplotlib绘图的正确打开方式 1.先搞懂fig.axes.axis `Figure` `Axes` `Axis` ...

  6. 科研论文绘图:ppt, word,latex,python matplotlib绘图 ,矢量图,高清图,放大不失真

    目录 1. 用PPT绘图,保存为高清图片,不推荐使用,方法链接 2. 用PPT绘图,保存为emf矢量图,适合插入word,方法链接 3. 用PPT画图,保存为eps文件,适合插入latex,方法链接 ...

  7. python matplotlib坐标轴设置的方法

    python matplotlib坐标轴设置的方法 在使用matplotlib模块时画坐标图时,往往需要对坐标轴设置很多参数,这些参数包括横纵坐标轴范围.坐标轴刻度大小.坐标轴名称等 在matplot ...

  8. 离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)

    离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中) 参考文章: (1)离线安装python第三方库的实用方法:解决公 ...

  9. Python matplotlib绘图如何显示中文的问题【有报错没有解决】

    一文详解matplotlib的配置文件以及配置方式 主要介绍路径问题和配置文件相关介绍 linux安装字体库(simSun为例)可以在终端中显示中文 Matlab绘图中下标.斜体及希腊字母的使用方法 ...

  10. 使用Python Matplotlib绘图并输出图像到文件中的实践

    在大数据及深度学习的背景下,随着卷积神经网络(CNN)的成功应用,图像识别能力好像唾手可得.最近实际工作中,却遇到了困难,难题是用于可学习的图像贫乏,很难形成用于学习的样本. 其实,也是有一定解决图像 ...

最新文章

  1. 文本每行都应该换行——vi文件末尾自动换行,不会导致php输出空行
  2. java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用
  3. Spring Boot配置多数据源
  4. 纷享销客完成新一轮数亿元融资,持续领跑中国CRM产业发展
  5. 一张图展示一段js代码的一生,变量对象、作用域链、闭包、this
  6. [51单片机] 定时器3-计时示例
  7. SQL Server 数据库角色简介
  8. 【matlab】膨胀
  9. MySQL数据库数据存放位置修改
  10. 单片机实验13:用热敏电阻和ADC实现测量温度
  11. 建模实训报告总结_建模实习工作总结
  12. 凸优化(Convex Optimization)是什么?
  13. 面试题:请说一下HashMap的底层实现原理。
  14. 网站建设中如何打造最优seo优化页面
  15. 【第4天】尊重是最有力的征服
  16. 2018 11.1 PION 模拟赛
  17. 《On Java》介绍
  18. laravel框架excel扩展包maatwebsite-excel升级3.1版本兼容处理
  19. 开发购物商城app系统软件需要多少钱
  20. pandas之创建DataFrame

热门文章

  1. 鹰式价差matlab,期权价差
  2. 调用支付宝第三方支付接口详解(沙箱环境)
  3. US Domain Center 建站神器
  4. Win 10 专业版重新激活详细操作步骤
  5. 记一个win10删除恢复分区问题
  6. 微信公众号怎么创建?
  7. 计算机系统概论(原书第2版)部分课后习题答案(第三章)
  8. lbochs模拟器最新版_Bochs模拟器下载_Bochs模拟器免费[系统增强]-下载之家
  9. iTRAQ(稳定同位素标记蛋白质组学技术)
  10. PC微信逆向之发送消息