r' \ textbf {}' .format()不适用于Matplotlib中的Latex字符串变量

时间:2018-01-18 22:02:10

标签: matplotlib format latex

您好我试图在Matplotlib中使用Latex文本渲染为标签启用粗体字体。我可以为数值变量(整数,浮点数)执行此操作,但使用字符串变量失败。

这样可行:

a = 1
plt.plot(X, y, label=r'\textbf{}'.format(a))

但这并不是:

a = 'text'
plt.plot(X, y, label=r'\textbf{}'.format(a))

我知道我可以这样做:

plt.plot(X, y, label=r'\textbf{text}')

但是如何使用字符串变量的格式?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要转义latex命令的大括号,因为.format函数使用这些括号来确定将其参数放在文本中的位置。

考虑例如

r'\textbf{}'.format("something") 

导致

"\textbfsomething"

这当然没有有效的乳胶命令。另一方面

r'\textbf{}'.format(9)

结果

"\textbf9"

有效的latex命令。要在保存方面,总是逃避所有大括号。

import matplotlib.pyplot as plt
plt.rcParams["text.usetex"] = True
a = 1
plt.plot([1,2], [2,3], label=r'\textbf{{{}}}'.format(a))

a = 'text'
plt.plot([1,2], [1,2], label=r'\textbf{{{}}}'.format(a))

plt.legend()
plt.show()