我注意到在使用默认的mathtext而不是LaTeX数学渲染引擎时,matplotlib 2.0.2中呈现数学公式时存在错误。似乎 mathtext 无法识别某些字形(在我的情况下是减号和乘号)。更奇怪的是,只有当这些特定的字形出现在刻度标签中时才会出现错误。当我故意在图标题中输入一些数学表达式时,它就能正常工作。
请注意,指数中出现的减号会正确地呈现。如果我省略
此��,如果我在rcParams中包含'axes.unicode_minus': False(并保留'mathtext.fontset': 'cm'),则所有减号都会正确呈现,但乘法符号的问题仍然存在。
在旧版本的matplotlib上(我已经测试了1.5.1、1.4.3和1.3.1),乘法符号错误似乎不是问题。然而,这些matplotib坚持只在10⁻²、10⁻¹、1、10、10²等处产生刻度标签,因此永远不需要乘法符号。
故障报告
这已被提交为Matplotlib的bug report。
请考虑以下示例及其结果图像:
import matplotlib
import matplotlib.pyplot as plt
# Customize matplotlib
matplotlib.rcParams.update({# Use mathtext, not LaTeX
'text.usetex': False,
# Use the Computer modern font
'font.family': 'serif',
'font.serif': 'cmr10',
'mathtext.fontset': 'cm',
})
# Plot
plt.semilogy([-0.03, 0.05], [0.3, 0.05])
plt.title(r'$-6\times 10^{-2}$')
plt.savefig('test.png')
正如图片所示,刻度标签中的乘法和一些减号已被替换为其他字符。如果我使用LaTeX(通过将'text.usetex'
设置为True
),则一切都可以很好地呈现。为什么会发生这种情况,更重要的是,我如何在不从mathtext转换为LaTeX的情况下解决它?
附加信息
这是运行示例代码时打印的警告:
mathtext.py:866: MathTextWarning: Font 'default' does not have a glyph for '\times' [U+d7]
MathTextWarning)
mathtext.py:867: MathTextWarning: Substituting with a dummy symbol.
warn("Substituting with a dummy symbol.", MathTextWarning)
请注意,指数中出现的减号会正确地呈现。如果我省略
'mathtext.fontset': 'cm'
,这些符号也不会正确呈现,会产生另一个类似的警告:mathtext.py:866: MathTextWarning: Font 'default' does not have a glyph for '-' [U+2212]
MathTextWarning)
mathtext.py:867: MathTextWarning: Substituting with a dummy symbol.
warn("Substituting with a dummy symbol.", MathTextWarning)
此��,如果我在rcParams中包含'axes.unicode_minus': False(并保留'mathtext.fontset': 'cm'),则所有减号都会正确呈现,但乘法符号的问题仍然存在。
在旧版本的matplotlib上(我已经测试了1.5.1、1.4.3和1.3.1),乘法符号错误似乎不是问题。然而,这些matplotib坚持只在10⁻²、10⁻¹、1、10、10²等处产生刻度标签,因此永远不需要乘法符号。
故障报告
这已被提交为Matplotlib的bug report。
'font.serif': 'Times New Roman'
,则可以正常显示。如果您认为“cmr10”也应该起作用,那么将其发布到matplotlib问题跟踪器上可能是个好主意。 - ImportanceOfBeingErnest