gpt4 book ai didi

Python fig.text() - 检索文本的高度以进行对齐

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:43 26 4
gpt4 key购买 nike

所以我正在将三个不同的文本 block 写到一个图中:

第一个我想用粗体、大白字写:

texttitle = "My Figure"
fig.text(0.8, 0.8, texttitle, color = 'w', visible = True, linespacing = 2, weight = 'bold', size = 'large')

第二个为粗体、普通的白色文本:

letters = "A:\nB:\nC:"
fig.text(0.8, 0.3, letters, color = 'w', visible = True, linespacing = 2, weight = 'bold')

第三个是普通的红色文本:

numbers = "1\n2\n3"
fig.text(0.9, 0.3, numbers, color = 'r', visible = True, linespacing = 2)

现在我必须调用 fig.text() 三次才能为不同的字符串获得不同的格式,因此我必须指定每个字符串的位置以确保它们对齐以便我得到类似这样的内容:

我想知道有没有一种方法可以只使用一个 fig.text() 命令来做到这一点?或者有没有一种方法可以获得其他 fig.text() 调用的尺寸,以便我可以排列对 fig.text() 的下一次调用?

我正在使用带有 GTKagg 后端的 Mac OSX。

谢谢,詹姆斯

最佳答案

相关调用是

txt.get_window_extent()

如果 txtplt.text 返回的文本对象。

在获取范围之前绘制图形很重要,因为之前没有计算它。一个完整的例子是:

import matplotlib.pyplot as plt
from matplotlib.transforms import offset_copy

fig = plt.figure()
ax = plt.axes()
txt = plt.text(0.1,0.5,"My text", transform = ax.transAxes)

fig.canvas.draw()

text_bbox = txt.get_window_extent()
transform_for_second_text = offset_copy(ax.transAxes, fig,
x=text_bbox.width,
units="dots")

plt.text(0.1,0.5, "Second text", transform=transform_for_second_text, color="r")

plt.show()

导致:

Output

请注意 fig.canvas.draw() 是一个相当昂贵的操作,所以不要经常这样做,例如,首先创建所有白色文本,然后绘制图形 Canvas ,然后然后创建所有红色文本。

关于Python fig.text() - 检索文本的高度以进行对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com