19

我正在使用 matplotlib 绘制一些图,但遇到了 TeX 渲染的问题。似乎 mathtext x-height is 比正常的 Bitstream Vera Sans 小一点。请参见以下示例:

x = linspace(0, 30, 300);
y = 0.5*rand(300)+20/(numpy.power(x-15, 2)+4);
xlabel(r'$\omega$ (rad$\cdot$Hz)');
ylabel(r'Intensity$^2$');
title(r'Why is $mathtext$ so much smaller than normal text?');

一些说明问题的随机数据图。

如您所见,希腊字母和数字尤其明显。理想情况下,我可以定义一些比例因子,使数学文本在每种字体大小下都更大一些。有没有办法简单地做到这一点?我不想简单地到处使用Computer Modern。如果可能的话,我也不想编译新的 Tex 数学字体。

采用的一种解决方案是对希腊字母和数字使用无衬线字体,但无论出于何种原因,matplotlib 都会忽略这些字体的格式:

title('Why does $mat\mathsf{plot}lib$ ignore formatting for $\mathsf{2}$ ($\mathsf{two}), $\mathbf{2}$ ($\mathbf{two}) and $\mathsf{\omega}$?')

标题已更改

我认为这与这些东西的排版方式的性质有关,但是有什么办法可以解决吗?

4

3 回答 3

11

matplotlib 文档

此外,您可以使用\mathdefault{...}或其别名 \mathregular{...}来使用用于 mathtext 之外的常规文本的字体。这种方法有很多限制,最明显的是可用的符号要少得多,但它可以使数学表达式与图中的其他文本很好地融合在一起。

于 2013-04-05T15:58:53.387 回答
3

尝试设置

rcParams['text.usetex'] = True

它将尝试使用外部 LaTeX 安装,而不是内置的 mathtext 渲染器。请参阅此 wiki(即使它有点过时)和关于问题 #1336的讨论

如果您的目标是 LaTeX,另一种选择是使用 pstricks。

于 2013-04-05T14:23:16.127 回答
0

这个问题应该在 matplotlib 2 中修复。见问题

数学模式和常规文本之间的字体大小不同 #7778

Matplotlib:正确的数学字体大小

于 2017-01-10T14:16:00.210 回答