Существует несколько способов сделать это
. Вы можете просто настроить пределы мощности (doc)
ax1.xaxis.get_major_formatter().set_powerlimits((0, 1))
, которые задают мощности где ScalerFormatter
переключается на научную нотацию
Или вы можете использовать FuncFormatter
, который дает вам большой контроль (но вы можете выбить свою ногу).
from matplotlib import ticker
scale_pow = 2
def my_formatter_fun(x, p):
return "%.2f" % (x * (10 ** scale_pow))
ax1.get_xaxis().set_major_formatter(ticker.FuncFormatter(my_formatter_fun))
ax1.set_xlabel('my label ' + '$10^{{{0:d}}}$'.format(scale_pow))
FuncFormatter
(doc) принимает функцию 2 аргументов, которая возвращает строку и использует эту функцию для форматирования метки. (Имейте в виду, это также изменит, как значения отображаются в углу интерактивных фигур). Второй аргумент - это «позиция», которая является аргументом, переданным, когда форматирование создает метки. Вы можете смело игнорировать его, но вы должны принять его (иначе вы получите ошибки от неправильного количества аргументов). Это является следствием унифицированного API всех форматировщиков и использования форматирования для отображения местоположения мыши в интерактивном режиме.