Matplotlib:更改数学字体大小

时间:2013-04-05 14:06:38

标签: python numpy matplotlib

我正在用matplotlib制作一些图,我遇到了TeX渲染的问题。似乎mathtext x-height比正常的比特流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?');

Plot of some random data illustrating the issue.

正如您所看到的,希腊字母和数字特别明显。理想情况下,我可以定义一些缩放因子,只会使每个字体大小的数学文本更大一些。有什么方法可以做到这一点吗?我想在任何地方使用Computer Modern。我也不想编译新的Tex数学字体,如果可能的话。

加入的一个解决方案是使用sans-serif字体作为希腊字母和数字,但无论出于何种原因,matplotlib都忽略了格式化:

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

Title changed

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

3 个答案:

答案 0 :(得分:9)

来自matplotlib docs

  

此外,您可以使用\mathdefault{...}或其别名   \mathregular{...}使用用于常规文本的字体   mathtext。大多数情况下,这种方法存在许多限制   值得注意的是,可用的符号要少得多,但它可能很有用   使数学表达式与情节中的其他文本很好地融合。

答案 1 :(得分:3)

尝试设置

rcParams['text.usetex'] = True

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

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

答案 2 :(得分:0)