在 matplotlib 中使用 \mathbb{}

The*_*Don 5 python latex matplotlib

我最近(即昨天)发现 matplotlib 作为绘图的 Matlab 更好的替代品。不幸的是,我对Python的了解接近于零。

我想\mathbb{}在图例和/或轴中使用(例如,表示期望值或方差),这似乎需要额外的 STIX 字体(例如,参见此处此处)。但是,到目前为止我还无法将这些字体包含在我的代码中。

在下面的示例中,我想替换\mathrm{E} --> \mathbb{E}\mathrm{V} --> \mathbb{V}。有简单的方法吗?

import numpy as np
import scipy.io
from matplotlib import pyplot as plt

plt.figure(figsize=[3.3, 3.3])
plt.rcParams.update({'font.size': 8, 'text.usetex': True})

plt.plot([1,2,3,4], [1,2,3,4], label=r'$\mathrm{E}[x]$')
plt.plot([1,2,3,4], [1,4,9,16], label=r'$\mathrm{V}[x]$')

plt.grid()
plt.xlabel('x')
plt.legend(loc='upper left')

plt.savefig('filename.pdf', format='pdf')

plt.show()
Run Code Online (Sandbox Code Playgroud)

luu*_*uuk 6

\mathbb由 LaTeX 包提供amsfonts,因此您必须加载此包才能正确编译图形。您可以使用该设置加载包text.latex.preamble,如下所示:

import numpy as np
import scipy.io
from matplotlib import pyplot as plt

plt.figure(figsize=[3.3, 3.3])
plt.rcParams.update({
    'font.size': 8,
    'text.usetex': True,
    'text.latex.preamble': r'\usepackage{amsfonts}'
})

plt.plot([1,2,3,4], [1,2,3,4], label=r'$\mathbb{E}[x]$')
plt.plot([1,2,3,4], [1,4,9,16], label=r'$\mathbb{V}[x]$')

plt.grid()
plt.xlabel('x')
plt.legend(loc='upper left')

plt.savefig('filename.pdf', format='pdf')

plt.show()
Run Code Online (Sandbox Code Playgroud)

用 mathbb 绘图

或者,要使用您在问题中引用的 STIX 字体,您可以使用 matplotlib 内置的 TeX 解析器,而不使用 LaTeX 进行文本处理(test.usetex可以False)。但是,在这种情况下,请注意\mathbb{}默认情况下会生成斜体文本,并且您需要将其与\mathrm{}as结合起来\mathrm{\mathbb{}}以获得直立文本(如您链接的示例中所示)。您的代码的可能版本是:

import numpy as np
import scipy.io
from matplotlib import pyplot as plt

plt.figure(figsize=[3.3, 3.3])
plt.rcParams.update({'font.size': 8})

plt.plot([1,2,3,4], [1,2,3,4], label=r'$\mathrm{\mathbb{E}}[x]$')
plt.plot([1,2,3,4], [1,4,9,16], label=r'$\mathrm{\mathbb{V}}[x]$')

plt.grid()
plt.xlabel('x')
plt.legend(loc='upper left')

plt.savefig('filename.pdf', format='pdf')

plt.show()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这就是结果。(作为链接发布以限制此答案的高度)