matplotlib如何使文本在填充空间后视觉上具有相同的长度

Kun*_*nda 3 python text matplotlib string-length

我正在努力使 matplotlib 中的文本在填充空间后具有相同的视觉长度。它总是对我不起作用。

这是我尝试过的,

from matplotlib import pyplot as plt

fig = plt.figure()
plt.text(0,1,'how are you', bbox=dict(facecolor='red', alpha=0.5))
plt.text(0,0,'how'.ljust(len('how are you'), bbox=dict(facecolor='red', alpha=0.5))
plt.show()
Run Code Online (Sandbox Code Playgroud)

和想法?

谢谢!

Imp*_*est 5

ljust向文本附加您指定的任意数量的空格。然而,对于普通字体,空格比大多数其他字母要小。比较:

在此输入图像描述

下部文本以所谓的等宽字体书写,其中每个字母(包括空格)具有相同的空格 - 因此得名。

您需要使用这样的字体才能使您的程序按预期方式工作:

from matplotlib import pyplot as plt
plt.rcParams['font.family'] = 'monospace'

fig = plt.figure()
plt.text(0,1,'how are you', bbox=dict(facecolor='red', alpha=0.5))
plt.text(0,0,'how'.ljust(len('how are you')), bbox=dict(facecolor='red', alpha=0.5))
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果这不是一个选项,您可以在文本后面放置一个矩形,将其宽度设置为您想要的,请参阅这个问题Matplotlib:如何指定x标签边界框的宽度