matplotlib 标签中的下划线不呈现

8zzbczxx  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(160)

在标签中使用下划线实际上并不会创建下划线。我不确定发生了什么
最小工作示例:

variable = range(5)
plt.plot(variable, variable, label='test_underscore')
plt.plot(variable, variable, label='escape\_underscore')
plt.plot(variable, variable, label=r'rawtest_underscore')
plt.plot(variable, variable, label=r'rawescape\_underscore')
_=plt.legend()

字符串


的数据

编辑:

以下是我的rcParams

plt.rcParams.update({
            'font.family': 'serif',
            'font.serif': 'cmr10',
            'mathtext.fontset': 'cm',
            'axes.unicode_minus': False,
            'font.size': 11,
            'figure.dpi': 200,
            'lines.linewidth': 0.5,
            'axes.grid': True
})


当我运行时没有这个,我得到它的工作正确:

vlurs2pr

vlurs2pr1#

字体cmr10是罪魁祸首。这是与matplotlib捆绑的字体,但它实际上不包括下划线字符。来自FontForge:


的数据
this website开始,下划线的unicode字符是U+005f,我们可以从上面的图像中看到它被Map到了overdot。这就是为什么我们在标签中看到了一个overdot而不是下划线。我将使用matplotlib提交一个关于这个问题的问题。希望我们能正确地修补字体。
编辑:github issue is here(#16995)

解决方案:

原来TeX最初没有下划线编码。
所以唯一的解决办法就是使用不同的字体。

v09wglhw

v09wglhw2#

我能够使用的另一个解决方案是将“”替换为“$\mathrm{}$”
例如使用

plt.text(1, 1, "GW200208$\mathrm{\_}$22")
plt.text(0, 1, "GW200208_22")

字符串
因此,x1c 0d1x

相关问题