文本在*内*边界框内对齐

2024-01-07

文本框的对齐方式可以通过horizontalalignment (ha) and verticalalignment (va) 参数,例如

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,5))
plt.subplots_adjust(right=0.5)
txt = "Test:\nthis is some text\ninside a bounding box."
fig.text(0.7, 0.5, txt, ha='left', va='center')

其产生:

有没有办法保持相同的边界框(bbox)对齐,同时更改该边界框中文本的对齐方式?例如使文本在边界框中居中。

(显然在这种情况下我可以只替换边界框,但在更复杂的情况下我想独立更改文本对齐方式。)


确切的 bbox 取决于特定后端的渲染器。以下示例保留文本 bbox 的 x 位置。精确地保留 x 和 y 有点棘手:

import matplotlib
import matplotlib.pyplot as plt

def get_bbox(txt):
    renderer = matplotlib.backend_bases.RendererBase()
    return txt.get_window_extent(renderer)

fig, ax = plt.subplots(figsize=(8,5))
plt.subplots_adjust(right=0.5)
txt = "Test:\nthis is some text\ninside a bounding box."
text_inst = fig.text(0.7, 0.5, txt, ha='left', va='center')

bbox = get_bbox(text_inst)
bbox_fig = bbox.transformed(fig.transFigure.inverted())
print("original bbox (figure system)\t:", bbox.transformed(fig.transFigure.inverted()))

# adjust horizontal alignment
text_inst.set_ha('right')
bbox_new = get_bbox(text_inst)
bbox_new_fig = bbox_new.transformed(fig.transFigure.inverted())
print("aligned bbox\t\t\t:", bbox_new_fig)

# shift back manually
offset = bbox_fig.x0 - bbox_new_fig.x0
text_inst.set_x(bbox_fig.x0 + offset)
bbox_shifted = get_bbox(text_inst)
print("shifted bbox\t\t\t:", bbox_shifted.transformed(fig.transFigure.inverted()))
plt.show()

打印输出

original bbox (figure system)   : Bbox(x0=0.7000000000000001, y0=0.467946875, x1=0.84201171875, y1=0.532053125)
aligned bbox            : Bbox(x0=0.55798828125, y0=0.467946875, x1=0.7000000000000001, y1=0.532053125)
shifted bbox            : Bbox(x0=0.7000000000000002, y0=0.467946875, x1=0.8420117187500001, y1=0.532053125)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文本在*内*边界框内对齐 的相关文章

随机推荐

  • 如何修改这个缓动函数以减少弹跳?

    我正在尝试修改 Flash CS3 提供的fl motion easing bounce函数使生成的动画弹跳更少 我知道 减少弹跳 有点模糊 但我希望能帮助您理解该功能 Thanks param t Specifies the curren
  • Django 模板中的外键关系

    我知道这个问题已经被问过很多次了 但我仍然无法解决 model py class Awb models Model awb id models CharField primary key True max length 50 awb shi
  • Android 截取 Surface View 的屏幕截图显示黑屏

    我正在尝试通过代码截取我的游戏的屏幕截图并通过意图共享它 我可以做这些事情 但是屏幕截图总是显示为黑色 这是与共享屏幕截图相关的代码 View view MainActivity getView view setDrawingCacheEn
  • iPhone:ubercab 又名 (uber) 地图坐标

    谁能描述如何通过 MKMapView 在屏幕中心的位置获取其地图坐标 查看 Uber 应用程序 免费 它们有一个静态的图钉位于屏幕中间 您拖动地图但图钉仍保留在那里 屏幕中间是他们找到您的位置 非常非常快 向您显示您附近的地址 嘿嘿 我是
  • 临时反应组件中的样式组件

    我在反应中的临时包装器中使用样式组件时遇到两个问题 组件已渲染 但不使用背景颜色 ComponentWithAddedColors 不是有效的打字稿 不知道为什么 有谁可以帮忙解决这个问题吗 interface IProps id stri
  • Numpy 一次将数组与多个标量进行比较

    假设我有一个数组 a np array 1 2 3 我想将它与一些标量进行比较 这工作得很好 就像 a 2 False True False 有没有办法可以同时使用多个标量进行这样的比较 比较两个数组时的默认行为是进行元素比较 但我希望一个
  • Django如何访问抽象Base模型局部变量

    我将这个抽象基本模型定义如下 class ActivityAbstractBaseModel models Model POOR PR FAIR FA MEDIOCRE ME GOOD ENOUGH GE GOOD GO VERY GOOD
  • ODBC 不断提示输入密码

    我有一个在 Access 2003 中构建的应用程序 它使用系统 DSN ODBC 连接到 SQL Server ODBC 使用 SQL 身份验证 当应用程序启动时 系统会提示用户在数据库中进行身份验证 我在同一域中设置了另一台计算机 并安
  • 在 Hive 中获取系统日期 -1

    有什么办法可以得到current date 1在 Hive 中的意思是yesterdays date总是 并且以这种格式 20120805 我可以像这样运行查询来获取数据yesterday s date就像今天一样Aug 6th selec
  • 防止xss攻击的更好方法

    这两种方法中哪一种是更好的防止 xss 攻击的方法 保存在数据库中时的 HTMLEntities 显示 回显时的 HTMLEntities 我发现第一个更好 因为您可能会在显示时忘记添加它 两者中哪一个是更好的防止xss攻击的方法 保存在数
  • 将 Spark 数据加载到 Mongo / Memcached 中以供 Web 服务使用

    我对 Spark 非常陌生 并且有一个特定的工作流程相关问题 虽然它并不是真正与编码相关的问题 但它更像是与 Spark 功能相关的问题 我认为它在这里是合适的 如果您认为这个问题不适合 请随时将我重定向到正确的网站 所以这里是 1 我计划
  • 在没有管理员权限的情况下安装 MSBuild 15(Microsoft 构建工具)?

    有没有办法在没有管理员权限的情况下在我的计算机上本地安装 MSBuild 15 微软安装程序开启https www visualstudio com downloads https www visualstudio com download
  • 我怎样才能获得正确的付款期限?

    我觉得这更像是数学问题 我公司的员工遍布全国各地 公司的某些部门采用 奇数 工资周期 而另一些部门则采用 偶数 工资周期 我将给定支付期的开始日期称为 支付期 我需要做两件事 1 确定给定日期所属的发薪期 Something like th
  • 了解简单 C 程序生成的汇编代码

    我试图通过使用 gdb 的反汇编程序检查简单 C 程序的汇编级代码 以下是C代码 include
  • 如何为 Dagger2 提供 GoogleApiClient 依赖项?

    我已经开始使用 Dagger2 来管理依赖项 并且我试图了解如何使用 DI 来提供单例 GoogleApiClient 这样做的动机是 减少样板代码 多个 Activity 和 Fragments 需要 GoogleApiClient 提高
  • Vuejs - 无法读取未定义的属性“_withTask”

    我试图在按下按钮后将新的 html 添加到我的 div 中 使用v for 但是在我按下按钮后 我收到此错误 并且元素 文章 被添加到 div 一次 但之后它就不再起作用了 vue js 3de6 1743 TypeError 无法读取未定
  • Visual Studio 2015 RC - 无法添加虚拟目录

    我最近升级了我的机器 这意味着我必须安装 VS 2015 RC 社区 打开以前的项目 必须重新创建以前的所有虚拟目录 才发现当我尝试时收到以下错误消息 操作无法完成 只需选择 添加虚拟目录 时 输入名称和路径 然后按 Enter 键 还有其
  • Tensorflow Dataset API 在完成一个 epoch 后恢复迭代器

    我有 190 个特征和标签 我的批量大小是 20 但经过 9 次迭代tf reshape正在返回异常reshape 的输入是一个有 21 个值的张量 但请求的形状有 60 个我知道这是因为Iterator get next 如何恢复我的迭代
  • 如何使用 pandas 将列中的每个 NaN 替换为不同的随机值?

    我最近一直在玩 pandas 现在我尝试用不同的正态分布随机值替换数据框中的 NaN 值 假设我有这个没有标题的 CSV 文件 0 0 343 1 483 2 101 3 NaN 4 NaN 5 NaN 我的预期结果应该是这样的 0 0 3
  • 文本在*内*边界框内对齐

    文本框的对齐方式可以通过horizontalalignment ha and verticalalignment va 参数 例如 import matplotlib pyplot as plt fig ax plt subplots fi