matplotlib mathtext 输出异常

2 投票
2 回答
1677 浏览
提问于 2025-04-17 14:52

我试着用mathtext来制作一个特别的图形标题,但结果失败了。它没有显示我想要的标题,而是打印出了一些看起来很奇怪的字符。我哪里出错了呢?

  • 操作系统:Fedora 18(圆形牛)
  • Python和matplotlib是通过yum从官方仓库安装的

这是我的完整代码:

import sys
print sys.version             # prints:
                              # 2.7.3 (default, Aug  9 2012, 17:23:57)
                              # [GCC 4.7.1 20120720 (Red Hat 4.7.1-5)]
import matplotlib
print matplotlib.__version__  # prints:
                              # 1.2.0

import matplotlib.pyplot as plt
plt.plot([1,5])
plt.title(r"$1.2345$")
plt.show()

这是输出的图片:

奇怪的标题渲染

2 个回答

4

如果你在使用RedHat、CentOS或者其他Fedora的衍生版本,可能会遇到这里描述的一个问题:https://bugzilla.redhat.com/show_bug.cgi?id=562421

你可以尝试安装“stix”字体包(在CentOS/RedHat上这个包叫“stix-fonts”)。然后删除你家目录下的 ~/.matplotlib/fontlist.cache 文件。接下来,重新运行系统的字体缓存脚本,通常是“fc-cache -f -s -v”。

现在,修改matplotlibrc设置(可以通过 ~./matplotlib/matplotlibrc 文件,或者在和你的脚本同一个目录下的matplotlibrc文件)如下:

mathtext.fontset : stix 
mathtext.fallback_to_cm : True
mathtext.default : it 

我很想知道这个方法对你是否有效。

1

显然,这个问题和字体有关。我找到了一份旧的错误报告,里面提到了这个问题。

其中一个评论里,有人建议安装一个叫做lyx-fonts的包。这对我解决了问题。


这里还有一个提出的替代方案,是这样配置数学文本的渲染(在脚本的顶部):

plt.rcParams['mathtext.fontset'] = "stix"

撰写回答