【问题标题】:Greek letters are printed bold in matplotlib latex output希腊字母在 matplotlib 乳胶输出中以粗体打印
【发布时间】:2015-07-07 14:34:46
【问题描述】:

我在 matplotlib 中使用乳胶输出来打印轴和图例的希腊符号。 (衬线)文本以正常字体粗细打印,但一些特殊字符以粗体打印。特别是,我指的是微的 mu,但也是 Angstrom 的(非希腊)符号。但是,其他希腊符号(例如 Omega)可以正常打印。我做了一个小例子来演示:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import matplotlib as mpl
import matplotlib.pyplot as plt


mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.unicode'] = True

mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['text.latex.preamble'] = [
    r"\usepackage{textgreek}",
    r"\usepackage{siunitx}"]


fig = plt.figure()

plt.plot([1, 2, 4], [0, 9, 7])
plt.xlabel(
    r"\si{\micro\metre} " +
    r"\si{\omega\metre} " +
    r"\si{\nano\metre} " +
    r"\si{\angstrom} " +
    r"\si{\micro\metre}\textmu")
plt.show()

fig.savefig('test.png')
fig.savefig('test.pdf')

我在实时输出、矢量输出和图像输出上有这个问题。让我感到困惑的是,我在工作中的过时 Ubuntu 机器上使用了一个月的脚本,但安装了 python 3.3。现在我尝试在我的个人 Arch 机器上运行脚本,但我遇到了问题。

【问题讨论】:

    标签: python matplotlib latex


    【解决方案1】:

    您安装的字体似乎有问题,在我的情况下,我可以通过以下命令指定要使用的字体来解决问题:

    mpl.rcParams['font.serif'] = 'Times'
    

    可在此处找到可用字体列表:http://matplotlib.org/users/customizing.html

    【讨论】:

    • 非常感谢。还没有解决它,但我正在努力解决它。其他字体也不起作用。
    • @ju。如果您找到最好的解决方案,请将其链接到此处,以便对其他人有所帮助:)
    【解决方案2】:

    很抱歉,正如 Achim 所说,我应该在此处发布我的解决方案。

    没什么特别的,只是我在 Arch 上的字体安装有点搞砸了。但是我也在文档中使用的 Palatino 字体运行良好,所以我决定在 Pyplot 中也使用它。这就是我在 Pyplot 中的标准字体配置的样子:

    import matplotlib as mpl
    
    mpl.rcParams['legend.fontsize'] ="large"
    mpl.rcParams['axes.labelsize'] = "x-large"
    mpl.rcParams['lines.linewidth'] = 2
    
    mpl.rcParams['xtick.labelsize'] = "x-large"
    mpl.rcParams['ytick.labelsize'] = "x-large"
    
    mpl.rcParams['text.usetex'] = True
    mpl.rcParams['text.latex.unicode'] = True
    mpl.rcParams['text.latex.preamble'] = r"\usepackage{textcomp}" + \
        r"\usepackage{textgreek}" +\
        r"\usepackage{subscript}" +\
        r"\usepackage{siunitx}" +\
        r'\usepackage{amsmath}' +\
        r"\usepackage[osf]{mathpazo}"
    
    mpl.rcParams['font.family'] = "Palatino"
    

    一个简短的评论:我在 mathpazo 包中使用旧样式的数字。这对于方程式和科学数字不是很有用。如果您还想使用旧样式的数字,我真的建议您使用 SIunitx 包(我还是建议这样做),避免使用 osf。

    如果您想避免使用 osf 作为独立数字,只需使用 \num{123},或与单位 \SI{123}{\celsius\per\square\hour} 一起使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-28
      • 2021-10-31
      • 2012-01-01
      • 2019-07-16
      • 2017-03-09
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      相关资源
      最近更新 更多