matplotlib中的黑魔法:constrained和tight layout

2023-11-16

欢迎关注”生信修炼手册”!

在画图时,经常会遇到文字等图形元素超过了图片边框,显示不全的问题,比如以下代码

>>> 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等常见图形元素时可以。对于复杂图形的布局问题,还是需要自己来精确控制图形元素的位置。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

  更多精彩

  写在最后

转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

一个只分享干货的

生信公众号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib中的黑魔法:constrained和tight layout 的相关文章

  • 如何向 CSS 形状添加偏移轮廓?

    我在创建带有斜角边缘的块时遇到了一些问题 此外我需要一个斜角的边框并稍微偏离主块 问题是这个块可以根据屏幕响应 不知道具体的方法 希望大家帮忙 这就是我现在所做的 box display flex padding 20px height 2
  • 像在 tumblr 注册页面上那样鬼写

    有谁知道如何创建一个类似 tumblr 的字段 http www tumblr com http www tumblr com 这是一个 URL 字段 其中有一些褪色的文本 然后当您单击它并键入时 它会附加一些文本 tumblr com 您
  • * 到底有多慢?

    大家都表示 选择器非常慢 但它到底有多慢呢 我总是试图避免它 但有时它非常有用 例如 h1 margin top 1em 简单来说 通用选择器 速度只与页面上的元素一样慢 Since 从右到左匹配浏览器获取每个元素并将其与所有候选规则进行匹
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • 水平滚动的表格上的“粘性”标题......完全不可能?

    经过过去几个小时的研究后 我开始认为这是不可能的 即使在最新的浏览器上也是如此 HTML table具有水平滚动的元素 带有 粘性 thead在顶部 作为垂直滚动的周围网页的一部分 这是我的尝试 a height 100px backgro
  • 使用 HTML5(数据列表)自动完成功能和“包含”方法,而不仅仅是“开头为”

    我找不到它 但我又不知道如何搜索它 我想用
  • JSP/Servlet HTTP 404 错误处理

    我想在我的网络应用程序中处理 HTML 404 错误 我可以这样写
  • 嵌套计算操作

    希望这很简单 我想使用CSS calc操作来执行两个计算 我想将宽度设置为等于 100 7 2 但是 如果我尝试在 CSS 计算操作中执行多个操作 则会失败 width calc 100 7 2 如何在一个 CSS 语句中执行多个计算操作
  • 如何在 select 和 option 标签中添加 JSON 数据?

    我有这个html代码 div class searchfilter div class searchwrapper div div
  • 将按钮文本放在一行上

    我的按钮文本在 safari 中显示在一行上 即使在初次单击后 但是在 google chrome 上 当您第一次到达该按 钮时 我的按钮将显示在一行上 但是当您浏览更多帖子并再次遇到 加载更多 按钮时 文本搞砸了 这只发生在谷歌浏览器上
  • 为不同的字体系列指定不同的字体大小

    有没有办法为不同的字体系列指定不同的字体大小 我想要使 用的字体 出于产品品牌目的 是一种有点罕见的字体 FlashDLig 并非所有 PC 和浏览器都支持 我的一台带有 IE 9 的 Windows 7 PC 不显示它 现在 对于我使用
  • 如何使跨度标签不可删除?

    我正在尝试使 contenteditable div 内的跨度标记不可删除 div Editable span Read Only span div 只读范围确实是只读的 但我可以通过单击删除键来删除整个范围 有没有一种属性方法可以告诉sp
  • 内嵌显示定义术语和描述

    我正在为页面上的某些元素使用定义列表 并需要它们内联显示 例如 它们normally看起来像 我需要它们看起来像 注意多个 DD 我可以让它们在 moz 中使用 float 来正常工作 但无论我尝试什么 它们都无法在 IE 中工作 我通常会
  • 如何将 Vue.js 作用域样式应用于通过视图路由器加载的组件?

    如何将 Vue js 作用域样式应用于通过以下方式加载的组件
  • 如何使整个跨度落入新行?

    这个片段显示了我想要的 http jsfiddle net 945Df 3 http jsfiddle net 945Df 3 div class sup strong a href Rosario Santa Fe Argentina a
  • 适用于移动设备的响应式订单确认电子邮件?

    我从未见过令人惊叹的订单确认 发票电子邮件 即使是最好的 html5 网站也会发送糟糕的订单确认电子邮件 有时是纯文本 我相信这是因为发票通常需要使用表格来显示购买的物品 这在移动设备上实现起来非常困难 我发现了一些让手机上的表格更易于管理
  • 如何在画布上所有其他内容后面绘制图像? [复制]

    这个问题在这里已经有答案了 我有一块画布 我想用drawImage在画布上当前内容后面绘制图像 由于画布上已经有内容 我正在使用字面上的画布来创建包含图像的画布 因此我无法真正先绘制图像 所以我无法使用drawImage在我呈现其余内容之前
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • Facebook 点赞按钮消失

    我的网站中的 Facebook Like 按钮出现问题 添加此代码 由 facebook 提供 按钮在创建时正确显示在任何页面中
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西

随机推荐

  • 包含抽象方法的类是抽象类吗?

    如果这个问题的范围是围绕 类 那么 包含抽象方法的类一定是抽象类 因为抽象方法的特征是 必须定义在抽象类中 但是话由说回来了 因为在JAVA中还有一种允许使用抽象方法的结构 那就是接口 在接口中的方法只能是抽象方法 不允许出现具体实现的方法
  • Python,创建map

    import matplotlib pyplot as mpp import os random math matplotlib version 3 5 1 numpy version 1 21 5 创建画布及坐标轴 def set cav
  • C语言二级题库(刷题软件+60套真题+填空题+大题)2022年9月份新题第三套

    文章只能发选择题 刷大题去刷题软件效果会更好 刷题软件 gongzhonghao 露露IT 选择题 1 下面选项中不是关系数据库基本特征的是 A 不同的列应有不同的列名 B 不同的列应有不同的数据类型 C 与行的次序无关 D 与列的次序无关
  • 业内常用即时传输网盘

    工具名称 业内常用即时传输网盘 功能简介 无需登录 短时间内有效 多用于传输小型敏感文件 外部链接 请见文内 内部网盘链接 在线站点 无网盘链接 使用说明 许多安全行内人士在团队内互传敏感文件时 为实现上传和下载文件时提供较快的速度和数据隐
  • 为什么我不使用JetBrains的屌炸天编辑器

    首先解释一下 JetBrains并没有出过一款叫做 屌炸天 的编辑器 作为一个提到编辑器圣战内心就无比激动的码农 我使用过JetBrains的大部分产品 从开始的PhpStorm 到PyCharm Intellij IDEA CLION a
  • XAML基础控件

    常用布局控件
  • QT内存管理

    Qt内存管理机制 Qt 在内部能够维护对象的层次结构 对于可视元素 这种层次结构就是子组件与父组件的关系 对于非可视元素 则是一个对象与另一个对象的从属关系 在 Qt 中 在 Qt 中 删除父对象会将其子对象一起删除 C 中delete 和
  • mmap和常规文件操作的区别

    mmap和常规文件操作的区别 对linux文件系统不了解的朋友 请参阅我之前写的博文 从内核文件系统看文件读写过程 我们首先简单的回顾一下常规文件系统操作 调用read fread等类函数 中 函数的调用过程 1 进程发起读文件请求 2 内
  • C语言:初阶指针和结构体

    1 指针是什么 指针理解的两个要点 指针是内存中的一个最小单元的编号 也就是地址 平时口语说的指针 通常指的是指针变量 是用来存放内存地址的变量 为了管理计算机内存空间 会把内存分为一个一个一个小的内存单元 每个内存单元占一个字节的空间 那
  • [carla]carla-ros-bridge调整主监视器视角

    打开文件 carla ros bridge src carla ros bridge actor factory py 在class ActorFactory object 中添加函数 def set spectator self worl
  • 输入缓冲区

    输入缓冲区 一 什么是输入缓冲区 二 如何处理 一 什么是输入缓冲区 如上图所示 当我们输入密码的字符串按下回车后 我们发现还没来得及输入yes or no 就已经显示输入失败 这是怎么回事儿呢 这就要引出我们今天介绍的主角 输入缓冲区 输
  • osg学习(七十二)SPHERE_MAP REFLECTION_MAP NORMAL_MAP

    1 球面贴图 已知视点 物体顶点 物体法线 计算反射向量 在球面上根据反射向量和视向量计算法向量 也即球面点 根据球面点计算纹理坐标进行采样贴图 2 反射贴图 根据1计算反射向量 以反射向量计算纹理坐标进行采样贴图 3 法线贴图 直接根据法
  • vb 字符串截取 资料 搜集

    1 ASC X Chr X 转换字符字符码 格式 P Asc X 返回字符串X的第一个字符的字符码 P Chr X 返回字符码等于X的字符 2 Len X 计算字符串X的长度 格式 P Len X 说明 空字符串长度为0 空格符也算一个字符
  • yolov5网络结构学习

    注 原文链接是深入浅出Yolo系列之Yolov5核心基础知识完整讲解 我觉得这篇文章写的很好 所以自己手敲了一遍 并修改了很小一部分的细节 或者加了一些来自作者另一篇文章深入浅出Yolo系列之Yolov3 Yolov4 Yolov5核心基础
  • Go(十三)Error接口和错误处理

    Go 语言中的错误处理与其他语言不太一样 它把错误当成一种值来处理 更强调判断错误 处理错误 而不是一股脑的 catch 捕获异常 目录 Error 接口 Error 接口 创建错误 fmt Errorf 错误结构体类型 Error 接口
  • 图像处理+边缘检测算法

    一 边缘检测算子类别 常见边缘检测算子 Roberts Sobel Prewitt Laplacian Log Marr Canny Kirsch Nevitia 二 一阶微分算子 Roberts Sobel Prewitt Robert算
  • Spark DataFrame的Join操作和withColumn、withColumnRenamed方法实践案例(Scala Demo代码)

    import org apache log4j Level Logger import org apache spark sql SparkSession import org apache spark sql functions obje
  • opencv Mat的一些基础操作

    cout lt lt value lt
  • Huawei MatePad Pro安装GMS服务详细图文教程

    一 导读 由于国际贸易环境的变化 谷歌公司自2019年起已不再为华为提供 GMS 服务 所以在此时间后华为新出的手机 平板等设备将不再集成 GMS 服务 对于国内普遍用户而言 应该影响不大或有的甚至毫无影响 但对于海外用户和国内一些特殊人群
  • matplotlib中的黑魔法:constrained和tight layout

    欢迎关注 生信修炼手册 在画图时 经常会遇到文字等图形元素超过了图片边框 显示不全的问题 比如以下代码 gt gt gt plt scatter x np random randn 10 y np random randn 10 s 40