希腊字母在 matplotlib latex 输出中以粗体打印
Greek letters are printed bold in matplotlib latex output
我在 matplotlib 中使用乳胶输出来打印轴和图例的希腊符号。 (衬线)文本以正常字体粗细打印,但一些特殊字符以粗体打印。特别是,我指的是微的 mu,也是埃的(非希腊语)符号。但是,其他希腊符号如欧米茄可以正常打印。我做了一个小例子来演示:
#!/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 机器上的脚本,但我遇到了问题。
看来是你安装的字体有问题,在我的例子中,我可以通过以下命令指定我想使用的字体来解决这个问题:
mpl.rcParams['font.serif'] = 'Times'
可在此处找到可用字体列表:http://matplotlib.org/users/customizing.html
对不起,正如 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}
一起使用
我在 matplotlib 中使用乳胶输出来打印轴和图例的希腊符号。 (衬线)文本以正常字体粗细打印,但一些特殊字符以粗体打印。特别是,我指的是微的 mu,也是埃的(非希腊语)符号。但是,其他希腊符号如欧米茄可以正常打印。我做了一个小例子来演示:
#!/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 机器上的脚本,但我遇到了问题。
看来是你安装的字体有问题,在我的例子中,我可以通过以下命令指定我想使用的字体来解决这个问题:
mpl.rcParams['font.serif'] = 'Times'
可在此处找到可用字体列表:http://matplotlib.org/users/customizing.html
对不起,正如 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}
一起使用