Matplotlib无法在图例中写入\approx LaTeX字符?

4

由于某些原因,我无法让matplotlib在图例中写下\approxLaTeX符号。

这是一个最小化工作示例:

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上打开了一个新问题,但我想到可能是我做错了什么,所以最好问一下。如果我错了,我会删除关闭它。
1个回答

9
尝试使用原始字符串字面量: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()

输入图像描述

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

  • 没有在字符串文字前面加上r,解释器会将字符串解释为:

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

  • '\a'是ASCII Bell的特殊转义字符。

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

为了确保字符串中的反斜杠(\)不会创建奇怪的转义字符,请在前面添加r


当然是 r。谢谢 Bill,这是一个很好的答案。 - Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接