matplotlib中的黑魔法:constrained和tight layout
时间:2022-07-24
本文章向大家介绍matplotlib中的黑魔法:constrained和tight layout,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在画图时,经常会遇到文字等图形元素超过了图片边框,显示不全的问题,比如以下代码
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.show()
输出结果如下
遇到这种问题,我们肯定想着说调节对应元素的属性,使其适合图片的大小,在这里例子中,我们通过调节字体大小fontsize可以来达到目的。这种方法要求我们对图形元素的属性进行精确控制,具体到一个确定的数值。
当然,我们可以不断调整属性的值,直到效果满意为止,但是在matplotlib中,为我们提供了更好的解决方法,通过constrained和tight layout两种布局,可以使得图形元素进行一定程度的自适应
1. constrained layout
用法如下
>>> plt.subplots(constrained_layout=True)
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.show()
输出结果如下
2. tight layout
用法如下
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.tight_layout()
>>> plt.show()
输出结果如下
只需要简单的应用这两种布局,matplotlib就会自动调整图形元素,使其恰当的显示,需要注意的是,这种黑魔法并不是任何情况下都可以奏效,只有当调整标题,图例,colorbar等常见图形元素时可以。对于复杂图形的布局问题,还是需要自己来精确控制图形元素的位置。
- 自学如何使用Python和Keras构建你自己专属的AlphaZero系统
- 用Visual Studio Code写Node.j
- 帝国CMS搜索页伪静态实现方法
- 5步搭建GO环境
- 你真的了解如何将 Nginx 配置为Web服务器吗
- 12个JavaScript技巧
- 梯度是如何计算的
- Java 机器学习库Smile实战(二)AdaBoost
- 如何用excel urldecode解码把url编码转为汉字?
- Scikit-learn实战之 SVM回归分析、密度估计、异常点检测
- TensorFlow模拟简单线性模型小栗子
- web跨域解决方案
- Bootstrap幻灯轮播如何支持触屏左右滑动手势?
- JavaScript 调试小技巧
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试题系列第8篇:谈谈String、StringBuffer、StringBuilder的区别?
- HTTP协议的请求与数据抓包
- Ubuntu 18.04 LTS 通过 Netplan 配置网络教程
- 【kafka源码】kafka内部的一些术语
- TKE使用自建NFS持久化存储
- 网站 SSL 检测 PCI DSS 不合规解决办法
- leetcode链表之分割链表
- 五分钟带你读懂 TCP全连接队列(图文并茂)
- Python基础
- JDK15正式发布,新增功能预览!
- Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库
- 安防视频监控系统视频上云解决方案EasyCVR音频基础知识介绍
- 安防视频监控系统视频上云解决方案EasyCVR语音转发功能音频数据打包发送流程介绍
- 视频上云/安防视频融合平台/安防视频云服务EasyCVR通道播放界面出现样式重叠如何修正?
- 什么是MySQL数据库?看这一篇干货文章就够了!