Matplotlib: метки метки не соответствуют настройке шрифта (пример текста LaTeX)

У меня есть следующий простой код python:

import numpy as np import matplotlib.pyplot as plt plt.rc( 'font', size=20, family="Times" ) # use a font with serifs # the following line triggers the problem plt.rc( 'text', usetex=True ) # activate LaTeX text rendering fig = plt.figure( figsize=(8,6) ) # (width,height) in inches ax1 = fig.add_subplot( 1, 1, 1 ) # rows cols plotnumber ax1.plot( np.linspace(1,10,10), np.linspace(1,10,10)**2 ) ax1.set_xlabel( r'\textit{x} in au' ) ax1.set_ylabel( r'\textit{y} in au' ) plt.show() 

Это приводит к следующему рисунку: Толщина шрифта в меток-метки неверна

Как вы можете видеть, метки ярлыков имеют слишком тонкий шрифт по сравнению с осями-метками (или метки-метки слишком толстые). Я выяснил, что это связано с активацией рендеринга текста LaTeX (см. Комментарий в коде), но я не знаю, как это изменить, поскольку я не хочу отключать рендеринг текста LaTeX.

Любая идея, почему толщина шрифта (что является множественным числом толщины?) Непоследовательна и как это изменить?

Обновление 1 : Следуя предложению из llap42 , взломать будет

 plt.xticks([2, 4, 6, 8, 10], ['2', '4', '8', '10' ]) 

Но это только взломать, и должно быть лучшее решение.

Как говорится в комментариях, это скорее проблема с метками, не подчиняющимися настройке шрифта при использовании с латексом.

Эта проблема возникает только при использовании ScalarFormatter (который является стандартным форматом для осей). Я опубликовал вопрос об этом на GitHub.

Обходным путем может быть использование другого Formatter. Например, StrMethodFormatter :

 import matplotlib.pyplot as plt import matplotlib.ticker plt.rc( 'text', usetex=True ) plt.rc('font',family = 'sans-serif', size=20) fig , ax = plt.subplots(figsize=(5,3)) ax.set_xlabel( r'\textit{x} in au' ) ax.set_ylabel( r'\textit{y} in au' ) fmt = matplotlib.ticker.StrMethodFormatter("{x}") ax.xaxis.set_major_formatter(fmt) ax.yaxis.set_major_formatter(fmt) plt.tight_layout() plt.show() 

введите описание изображения здесь