Matplotlib: Изменить размер математического шрифта

Я делаю несколько графиков с помощью matplotlib, и я столкнулся с проблемой рендеринга TeX. Кажется, что x-высота математического текста немного меньше, чем у обычного битового потока 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 везде. Я также не хочу компилировать новый текстовый математический шрифт, если это вообще возможно.

Одно из решений, которое я выбрал бы, - это использование шрифтов без засечек для греческих букв и цифр, но по какой-то причине matplotlib игнорирует их форматирование:

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

Название изменено

Я предполагаю, что это как-то связано с характером того, как эти вещи набираются, но есть ли способ это исправить?

3 ответа

Решение

Из документов matplotlib:

Кроме того, вы можете использовать \mathdefault{...} или его псевдоним \mathregular{...} использовать шрифт, используемый для обычного текста за пределами математического текста. У этого подхода есть ряд ограничений, в частности, из-за того, что будет доступно гораздо меньше символов, но может быть полезно, чтобы математические выражения хорошо сочетались с другим текстом на графике.

Попробуйте установить

rcParams['text.usetex'] = True

который будет пытаться использовать внешнюю установку LaTeX, а не встроенный рендерер mathtext. Смотрите эту вики (хотя она немного устарела) и обсуждение вопроса № 1336.

Другой вариант, если вы ориентируетесь на LaTeX, это использовать pstricks.

Другие вопросы по тегам