确定 matplotlib 轴大小(以像素为单位)

2023-11-21

给定一组axes在 matplotlib 中,有没有办法确定其大小(以像素为单位)?我需要根据调整更大或更小的数字来缩放事物。

(特别是我想更改线宽,使其与轴尺寸成比例。)


这给出了以英寸为单位的宽度和高度。

bbox = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
width, height = bbox.width, bbox.height

这可能足以满足您的目的,但要获得像素,您可以乘以fig.dpi:

width *= fig.dpi
height *= fig.dpi

例如,

import matplotlib.pyplot as plt

def get_ax_size(ax):
    bbox = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
    width, height = bbox.width, bbox.height
    width *= fig.dpi
    height *= fig.dpi
    return width, height

fig, ax = plt.subplots()
print(get_ax_size(ax))
#(496.0, 384.00000000000006)

ax2 = plt.axes([0.3, 0.3, 0.7, 0.7])
print(get_ax_size(ax2))
# (448.0, 336.0)

制作与人物尺寸完全相同的图像,您必须删除图形和轴之间的空格:

import numpy as np
import matplotlib.pyplot as plt

def get_ax_size(ax):
    bbox = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
    width, height = bbox.width, bbox.height
    width *= fig.dpi
    height *= fig.dpi
    return width, height

data = np.arange(9).reshape((3, 3))
fig = plt.figure(figsize=(8,6), dpi=80)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(data, aspect='equal')
print(get_ax_size(ax))
# (640.0, 480.0)
plt.savefig('/tmp/test.png', dpi=80)

% identify /tmp/test.png
/tmp/test.png PNG 640x480 640x480+0+0 8-bit DirectClass 50.5KB 0.020u 0:00.020
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定 matplotlib 轴大小(以像素为单位) 的相关文章

随机推荐

  • 嵌套列表的 LINQ to Entities 投影

    假设这些物体 class MyClass int ID get set string Name get set List
  • 查询 MongoDB 以获得有序的不同值

    我正在使用 Morphia Java 驱动程序来查询包含以下形式集合的 MongoDB MyCollection TypeA TypeB 我想检索 TypeB 的所有不同值 我使用以下代码执行此操作 DBCollection myCol g
  • ASP.Net MVC 中的实时视频聊天 + 录制解决方案 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想在 ASP NET MVC 中开发一个应用程序 这是详细的场景 应用程序应提供 实时 视频聊天的设施 不应该有任何延迟 可接受的延迟低于 4 秒 但由于这是一次面试 超过 4 秒
  • 适用于 Android 的 Visual Studio 模拟器 - 模拟设备运行需要内部虚拟网络交换机

    Problem 我想用适用于 Android 的 Visual Studio 模拟器但每当我尝试启动它时 它都会失败 日志的最后部分是 27 9 2015 11 10 38 Informational Session Started 27
  • 使用 jQuery 获取多个文件选择的所有值[重复]

    这个问题在这里已经有答案了 可能的重复 使用 javascript 从多文件上传控件中检索文件名 收到
  • 为什么 execve() 的第一个参数必须是可执行文件的路径

    我了解 execve 和系列要求其参数数组的第一个参数与其第一个参数也指向的可执行文件相同 也就是说 在此 execve prog args env args 0 通常与 prog 相同 但我似乎无法找到有关原因的信息 我也理解可执行文件
  • 动态图标 PWA 清单

    我正在使用 angular5 制作一个白色标签 PWA 我想知道是否可以根据 URL 中的信息动态更改清单文件中的 png 图标 我想要为每个独特的组织使用不同的图标 like www mywebsite com organization1
  • 基础的定义必须先于派生合约的定义

    我有两个不同的文件 即 Project1 sol 和 Project2 sol Project2 sol 就像 import Project1 sol contract Project2 address newProject1Address
  • 使用 ggplot 绘制大量时间序列。是否可以加快速度?

    我正在处理数千个气象时间序列数据 可以从此处下载示例数据 https dl dropboxusercontent com s bxioonfzqa4np6y timeSeries txt 在我的 Linux Mint PC 64 位 8GB
  • 使用dispatch_async加速搜索?

    我正在尝试加快我的应用程序搜索速度 当有大量数据时它会出现滞后 所以我正在尝试拆分搜索谓词 on UI通过使用dispatch async not dispatch sync如果我使用它 没有什么不同 问题是当我使用dispatch asy
  • 重新连接后 Chrome net::ERR_HTTP2_PROTOCOL_ERROR 200

    我正在将节点服务器与处理服务器发送事件流的 Express 应用程序一起使用 这是通过启用了 http2 的 NginX 进行代理的 SSE 事件通过 React 应用程序中的 EventSource 来使用 我每 10 秒发送一条心跳消息
  • 记录类型的前向声明

    有没有像标题那样的东西 我正在尝试在转换过程中执行此操作API 结构 并遇到了一些我以前没有遇到过的事情 PFNReaderTranslatedDispatch function var msg TMsg BOOL stdcall PFNR
  • Google 应用引擎实体组

    据我从应用程序引擎教程中了解到 实体组仅出于事务目的而存在 仅在事务需要时才使用实体组 来自教程 位于同一实体组中的定义是具有相同的根 那么 具有超过 1 个层次结构级别有什么用呢 也就是说 为什么我要用 A gt B gt C A是根 B
  • 检查数组中的所有布尔值是否都为 true?

    假设我有这个布尔数组 bool something 4 false false false false 现在 有没有简单的方法可以检查该数组中的所有值是否同时为真 假 而不是这样做 if something 0 false somethin
  • 我必须删除它吗? [Qt]

    在下面的示例中 我是否必须从堆中删除对象 如果是 怎么办 include
  • 我如何准备要发布的 Jetpack compose 应用程序,@Preview 可组合项怎么样?

    我的 Jetpack compose 应用程序的源代码加载了 Preview 可组合项 我通过从源代码中删除所有这些 Preview 可组合项来准备发布我的应用程序 就像我们所做的那样 例如 使用日志方法 有什么办法可以自动化这个删除过程吗
  • 使用浏览器作为桌面 UI

    如何使用浏览器作为桌面应用程序的 UI 到目前为止我想出的方法是 使用所有 HTML Javascript 问题 无法访问文件系统或其他任何内容 在使用应用程序时运行本地网络服务器 问题 用户完成后如何杀死它 我的用户的技术水平不足以使用
  • 通过 .net 会员提供商进行编程登录

    我正在尝试对一段需要当前登录用户进行测试的代码进行单元测试 使用 Net 2 0 Membership Provider 我如何以编程方式作为用户登录以进行此测试 if Membership ValidateUser user1 P ssw
  • 更改 jQuery Mobile 的默认数据主题

    通过 jQuery Mobile 我可以使用自定义主题创建页面 div 现在这可以工作 但要求我在每个页面中以及每次添加新页面时添加此行 我尝试添加data theme s 到 body 标签 但这没有影响 除了每页手动设置之外 还有什么方
  • 确定 matplotlib 轴大小(以像素为单位)

    给定一组axes在 matplotlib 中 有没有办法确定其大小 以像素为单位 我需要根据调整更大或更小的数字来缩放事物 特别是我想更改线宽 使其与轴尺寸成比例 这给出了以英寸为单位的宽度和高度 bbox ax get window ex