matplotlib不会在图例中写出\大约LaTeX字符?

时间:2014-07-14 14:44:56

标签: python matplotlib latex

出于某种原因,我无法让matplotlib在传奇中记下\approx LaTeX符号。

这是一个MWE:

import matplotlib.pyplot as plt
plt.scatter([0.5, 0.5], [0.5, 0.5], label='$U_{c} \approx %0.1f$' % 22)
#plt.scatter([0.5, 0.5], [0.5, 0.5], label='$U_{c} \simeq %0.1f$' % 22)
#plt.scatter([0.5, 0.5], [0.5, 0.5], label='$U_{c} \sim %0.1f$' % 22)
plt.legend(fancybox=True, loc='upper right', scatterpoints=1, fontsize=16)
plt.show()

请注意,第一行不会显示\approx字符或后面的值,但\simeq\sim都可以正常工作。

我刚刚在matplotlib的Github中打开new issue,但我突然意识到我可能做错了所以我最好问一下。如果我,我将删除关闭它。

1 个答案:

答案 0 :(得分:6)

尝试使用原始字符串文字:r'$U_{c} \approx %0.1f$'

In [8]: plt.scatter([0.5, 0.5], [0.5, 0.5], label=r'$U_{c} \approx %0.1f$'%22)
Out[8]: <matplotlib.collections.PathCollection at 0x7f799249e550>
In [9]: plt.legend(fancybox=True, loc='best')
Out[9]: <matplotlib.legend.Legend at 0x7f79925e1550>
In [10]: plt.show()

enter image description here

发生这种情况的原因如下:

  • 如果没有字符串文字的r,则解释器会将字符串解释为:

    '$ U_ {c}'+'\ a'+'pprox 22.0 $'

  • '\a'是ASCII响铃的特殊转义字符:BEL

  • 然后将此解释的字符串传递给TeX解析器。但是,由于'\approx'已被混淆,因此TeX解析器不知道如何将字符串转换为正确的TeX。

要确保字符串中的反斜杠(\)没有创建奇怪的转义字符,请在前面添加r