matplotlib为何不在图例中写\approx LaTeX字符?
出于某种原因,我无法让 matplotlib
在图例中写出 \approx
这个 LaTeX 符号。
下面是一个简单的示例:
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铃声:BEL
。- 这个被解释的字符串会传给TeX解析器。但是,因为
'\approx'
被搞混了,TeX解析器不知道怎么把你的字符串转换成正确的TeX格式。
为了确保字符串中的反斜杠(\
)不会产生奇怪的转义字符,前面加上r
。