今天,我遇到了一个非常特定问题:我想使用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)
那么,您知道是否有一种方法可以不必考虑每种可能的情况吗?谢谢
答案 0 :(得分:2)
在编写LaTeX文档时,在数学模式下,我使用\;
来放置空格。它似乎也可以在这里工作。
plt.text(0,0,r'String is $\bf{{{}}}$'.format(var.replace(' ', r'\;')))
我建议您使用str.format()
而不是连接字符串,因为这会使您下次查看时更加清晰。