以预定义的宽度/高度比保存右侧带有图例的 matplotlib 图

2023-12-23

我想将 matplotlib 图保存为宽高比为 1.25 的 png 文件。我通过Figsize参数指定了这个比率。但是当我使用选项保存图形时bbox_inches = "tight"那么输出 png 的大小为 553 到 396 像素,比率为 1.39。我想保留bbox_inches = "tight"选项以防止图形边框中出现不必要的空白。我尝试了 stackoverflow 上类似帖子中建议的不同方法,但无法找到解决方案。

这是示例代码:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize = (3, 2.4), dpi = 150)
ax = plt.subplot(111)

for i in range(3):
    ax.plot(np.random.random(10), np.random.random(10), "o", label = i)
ax.legend(bbox_to_anchor=(1, 0.6), title = "Title")
plt.ylabel("Label")
plt.xlabel("Label")
plt.title("Title", loc = "left")
plt.savefig("test.png", format = "png", dpi = 150, bbox_inches = "tight")

This is the output png enter image description here


The bbox_inches = "tight"明确告诉 matplotlib 裁剪或扩展图形;因此,图形尺寸的任何设置都将丢失。因此,如果您想控制图形大小,则不能使用此选项。

您还有其他选择:

定义BBox

  • 定义你自己的bbox_inches,它确实具有所需的方面。尺寸Bbox http://matplotlib.org/devel/transformations.html#matplotlib.transforms.Bbox将会[[x0,y0],[x1,y1]].

    import matplotlib.transforms
    bbox = matplotlib.transforms.Bbox([[-0.2, -0.36], [3.45, 2.56]])
    plt.savefig("test.png", format = "png", dpi = 150,bbox_inches =bbox)
    

    enter image description here
    This image is now 547 x 438 pixels, thus having an aspect of 1.2488, which is as close as you can get to 1.25.

调整内边距

  • 使用原始图形尺寸(3, 2.4)并调整填充,使所有元素都适合图形。这将使用fig.subplots_adjust().

    fig = plt.figure(figsize = (3, 2.4), dpi = 150)
    fig.subplots_adjust(top=0.89,
                        bottom=0.195,
                        left=0.21,
                        right=0.76)
    

    enter image description here
    This image now has the expected size of (3, 2.4)*150 = 450 x 360 pixels.

  • 要自动确定子图参数,另请参阅这个问题:创建具有精确尺寸且无填充的图形(以及轴外的图例) https://stackoverflow.com/questions/42994338/creating-figure-with-exact-size-and-no-padding-and-legend-outside-the-axes

一般来说,我建议阅读这个答案 https://stackoverflow.com/a/43439132/4124317到“如何将传说从情节中剔除”。

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

以预定义的宽度/高度比保存右侧带有图例的 matplotlib 图 的相关文章

随机推荐

  • JIRA:生成每个用户的时间报告?

    抱歉 如果 SO 不是最好的地方 但我在 JIRA 中启用了时间跟踪 并且希望能够为给定日期范围内的每个用户生成时间报告 我唯一拥有的时间跟踪报告选项非常有限 并且不能满足我的要求 是否可以通过标准功能或免费插件来实现 您可能想查看用于 J
  • JavaFX - 带箭头画线(画布)

    我将此代码重写为 JavaFX 时遇到问题 private final int ARR SIZE 8 void drawArrow Graphics g1 int x1 int y1 int x2 int y2 Graphics2D g G
  • 在 EF Core 中如何选择特定列并保存

    我有以下 SQL 表 ID INT Status NVARCHAR 50 FileContent XML 使用 EF Core 我想选择ID and Status列 但不加载 XML 列 由于 xml 数据可能很大 我不想将其加载到内存中
  • MacVim 的西班牙语拼写检查器?

    如何为 MacVim 添加西班牙语拼写检查器 我读到这是一个有用的link ftp ftp uniovi es pub vim runtime spell ghindex html 但显然它不起作用 我该怎么办 我不了解 MacVim 但是
  • 了解使用 LFSR 实现 CRC 生成的两种不同方法

    There are two ways of implementing CRC generation with linear feedback shift registers LFSR as shown in this figure The
  • Spring Boot 转换 Enum 忽略大小写

    我有一个 spring boot 应用程序 它暴露了Rest API https i stack imgur com DT1tp png 此 API 接受枚举列表batchStatus作为查询参数 这batchStatus用于根据状态过滤所
  • 过程式编程比面向对象编程有什么优势吗?

    编辑 早些时候 我问这个问题可能是一个框架很糟糕的问题 即何时使用 OOP 与何时使用过程编程 一些回复暗示我是在寻求帮助理解 OOP 相反 我经常使用 OOP 但想知道何时使用过程方法 从反馈来看 我认为存在相当强烈的共识 即 OOP 通
  • setjmp 和 longjmp - 通过示例进行理解

    我知道 setjmp 和 longjmp 的定义 setjmp 将环境存储在堆栈上下文中 另一个恢复 但我认为我的部分还存在一些缺乏理解的地方 有人可以在很好的例子的帮助下向我解释一下我如何保证 如何保存以及如何恢复吗 我看到jmp buf
  • JavaScript SQL 插入循环

    我试图向函数传递一个数组 该数组应该通过循环运行并为每个递增的 SQL 语句调用 db transaction function updateColorData colorArray for var i 0 i
  • 如何使用 selenium 驱动程序单击元素?

    我一直在尝试使用 selenium 抓取 bookmyshow 网站的网页 页面加载后 会出现 2 个弹出窗口 在这两个中 我们必须单击所需的按钮来关闭它们 当我尝试找到这些元素时 出现错误 我让驱动程序使用 sleep 完全加载页面 但我
  • 如何使用字符串插值在 Groovy 中使用点表示法从嵌套映射的属性中获取值

    我从参数收到一个点符号字符串 例如 attr1 attr2 attr3 我有一个数据类型的对象LinkedHashMap
  • 如何在投影实体框架对象中包含复杂的实体字段?

    我经常使用System Data Entity DbExtensions Include 方法使复杂的实体字段包含在我的存储库的查询结果中 然而 当我将实体投影到新类中时 我似乎失去了所包含的复杂实体字段的 具体化 例如 假设我想退回Eve
  • setAction()对于Intent(广播)做什么

    Intent Service 中setAction 做了什么 我真的不明白什么设置动作 是的 我主要在 活动数据传递服务 例如 字符串可以自由设置吗 它到底有什么作用 创建广播意图时 它必须包含一个 ACTION STRING 除了可选数据
  • golang正则表达式删除所有空白行

    我想使用 golangs 正则表达式替换所有空白行和仅填充空格 制表符的行 我认为下面的正则表达式应该可以解决问题 emptyLINE regexp MustCompile s 但令我惊讶的是 行的开头 和行尾 正则表达式标签不起作用 它们
  • 如何在 Windows 10 上的单个进程中使用辅助 GPU 上 100% 的 VRAM?

    这是在 Windows 10 计算机上 没有连接到 Nvidia 卡的显示器 我已经包含了 nvida smi 的输出 显示 gt 5 04G 可用 这是张量流代码 要求它分配的内存比我之前看到的稍多一些 我希望它尽可能接近内存分数 1 0
  • CSS 中的类和 ID 有什么区别?举例说明在哪里使用[重复]

    这个问题在这里已经有答案了 在哪里可以使用 id 和类 它们之间有什么区别 我们是否需要在 CSS 中强制使用 ids ID 应该是唯一的 而类更适合元素的 类型 所以你可能会遇到类似的情况 ul ul 因为您的网站上可能只有 1 个主菜单
  • 如何创建安全 (TLS/SSL) Websocket 服务器

    我在用WS网络套接字 https github com websockets wsNode js 的库 目前我正在运行 ws 服务器 现在我想通过使用安全连接来保护此连接 即通过实现 wss 协议以及库支持 TLS 连接 我搜索了一下 发现
  • 如何在 GAE Python NDB 中获取最新数据

    我正在使用 GAE Python 我有两个根实体 class X ndb Model subject ndb StringProperty grade ndb StringProperty class Y ndb Model identif
  • 如何使用 LWP 发出 HTTP PUT 请求?

    我正在尝试将此请求更改为 HTTP PUT 请求 知道如何操作吗 my request LWP UserAgent gt new my response request gt get url apikey apiKey requestDat
  • 以预定义的宽度/高度比保存右侧带有图例的 matplotlib 图

    我想将 matplotlib 图保存为宽高比为 1 25 的 png 文件 我通过Figsize参数指定了这个比率 但是当我使用选项保存图形时bbox inches tight 那么输出 png 的大小为 553 到 396 像素 比率为