在matplotlib

时间:2019-03-21 18:29:26

标签: python matplotlib text

今天,我遇到了一个非常特定问题:我想使用plt.text()以粗体显示一个函数内的字符串变量。在将mathtext与常用语法混合使用时,我觉得我正在将Python的绘图功能推到极限。

因此,函数的重要部分如下所示:

def graph_text(var):
    string0=f'String is:'+r"$\bf{"+var+"}$"
    plt.text(string0)

问题是var是一些字符串,可以包含一到三个单词。默认情况下,mathtext中的字符串是连接在一起的,因此,对于var='the dog',这将打印“ String is thedog ”。

然后我尝试使用split()'\/\'.join(),如下所示:

string0=f'String is:'+r"$\bf{"+('\/\'.join(var.split()))+"}$"

('\ / \'在mathtext中是一个空格,但是由于这里不属于mathtext语法,因此将其解释为换码符并带来一个SyntaxError。因此,我唯一能找到的解决方案是手动执行以下操作:

 if len(var)==1:
    string0=f'String is:'+r"$\bf{"+var.split()[0]+"}$"
elif len(var)==2:
    string0=f'String is:'+r"$\bf{"+var.split()[0]+r" $\bf{"+var.split()[1]+"}$"
else:
    (insert same code but for three words)

那么,您知道是否有一种方法可以不必考虑每种可能的情况吗?谢谢

1 个答案:

答案 0 :(得分:2)

在编写LaTeX文档时,在数学模式下,我使用\;来放置空格。它似乎也可以在这里工作。

plt.text(0,0,r'String is $\bf{{{}}}$'.format(var.replace(' ', r'\;')))

我建议您使用str.format()而不是连接字符串,因为这会使您下次查看时更加清晰。