将字符串部署到matplotlib时,如何使字符串中的一个单词变为粗体?

时间:2019-01-04 01:11:40

标签: python-3.x matplotlib fonts

我正在尝试在Python中向matplotlib轴添加文本。

这里是设置:

import matplotlib.pyplot as plt
s = 'This is a {}'.format('string')
fig,ax = plt.subplots()
ax.text(x=0.5,y=0.5,s=s,ha='center',va='center',fontweight='normal')

产生以下结果:

enter image description here

具体来说,我想做的只是将单词“ string”本身加粗。我一直在寻找实现此目的的方法,但到目前为止还没有成功。

我专门通过设置format方法将单词'string'本身部署到字符串中来设置s字符串,因为我认为也许有某种方法可以将格式化参数附加到字符串上?

在ax.text选项中,似乎只能通过调整fontweight参数来影响整个字符串的权重。

有没有简单的方法可以做到这一点?如果没有,也许是一种合并html语法的方法?

谢谢您的解决方案!我真正要寻找的是最简单的(我想也是pythonic的)!

谢谢!


根据使用MathText的可能解决方案进行进一步编辑。如果我希望字符串更长并且包含换行符,则不清楚如何在不转义粗体格式的情况下也插入换行符。

示例:

import matplotlib.pyplot as plt
s = 'This is a' + r'$\bf{}$'.format('string, that is much longer than the last string.  I would like to insert a line break here.  Then continue with the sentence on a new line.')
fig,ax = plt.subplots(figsize=(20,10))
ax.text(x=0.5,y=0.5,s=s,ha='center',va='center',fontsize=12,fontweight='normal')

产生:

enter image description here

但是,如果我插入换行符,似乎可以避开粗体格式:

import matplotlib.pyplot as plt
s = 'This is a' + r'$\bf{}$'.format('string, that is much longer than the last string.  I would like to insert a line break here.\n  Then continue with the sentence on a new line.')
fig,ax = plt.subplots(figsize=(20,10))
ax.text(x=0.5,y=0.5,s=s,ha='center',va='center',fontsize=12,fontweight='normal')

产生:

enter image description here

注意:同样重要的是,我必须在字符串本身内部署换行符,而不是添加多个字符串,因为这是我要一遍又一遍地重复作为其他代码输出的过程,即不必通过手动拆分字符串来解决。

我意识到这可能现在已经不重要了,但这是问题的顶点!谢谢!

0 个答案:

没有答案