首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matplotlib中使用\mathbb{}

在matplotlib中使用\mathbb{}
EN

Stack Overflow用户
提问于 2020-12-23 22:38:43
回答 1查看 747关注 0票数 3

我最近(也就是昨天)发现matplotlib在绘图方面比Matlab好得多。不幸的是,我对python的了解几乎为零。

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

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

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-23 22:45:32

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

代码语言:javascript
运行
复制
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()

或者,要使用您在问题中提到的STIX字体,您可以使用matplotlib内置的TeX解析器,而不是使用LaTeX进行文本处理(test.usetex可以是False)。但是,在本例中,请注意\mathbb{}在默认情况下会生成斜体文本,您需要将其与\mathrm{}作为\mathrm{\mathbb{}}组合以获得竖排文本(如您所链接的示例中所示)。你的代码的一个可能版本是:

代码语言:javascript
运行
复制
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()

In this case, this is the result. (posted as a link to limit the height of this answer)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65426069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档