Matplotlib: отключить полномочия десяти в лог-сюжете

Есть ли простой способ заставить matplotlib не показывать степени десяти в логарифмическом графике, а просто показывать числа? Т.е. вместо [10^1, 10^2, 10^3] дисплей [10, 100, 1000]? Я не хочу менять места для отметок, просто хочу избавиться от полномочий десяти.

Вот что у меня сейчас есть:введите описание изображения здесь

Я могу изменить сами ярлыки через xticks, однако я получаю несоответствующие шрифты или размеры для ярлыков y. Я использую TeX для этого текста. Я пробовал следующее:

xx, locs = xticks()
ll = [r'\rm{%s}' % str(a) for a in xx]
xticks(xx, ll)

Это дает следующий результат:введите описание изображения здесь

В этом конкретном случае я мог бы использовать тот же самый латинский шрифт LaTeX, но размеры и внешний вид отличаются от тех, что на оси y. Плюс, если я использовал другой шрифт LaTeX в matplotlib, это будет проблематично.

Существует ли более гибкий способ отключения десятизначной записи?

1 ответ

Решение

Использовать ScalarFormatter:

from matplotlib import rc
rc('text', usetex=True)
rc('font', size=20)

import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111)
ax.semilogx(range(100))
ax.xaxis.set_major_formatter(ScalarFormatter())
plt.show()

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