Matplotlib: установка оси Y на нон научную c запись ПОСЛЕ изменения оси Y на логарифмический масштаб - PullRequest
0 голосов
/ 14 марта 2020

У меня есть простой график с объектом axs для осей. Перед тем, как я изменил ось Y на логарифмический масштаб, формат представляет собой обычные числа.

После того, как я изменил ось Y на логарифмический масштаб, используя: axs.set_yscale('log') ... Затем попробуйте изменить числа обратно с

axs.set_yticklabels(['{:,}'.format(int(x)) for x in axs.get_yticks().tolist()])

Не работает ... ярлыки по-прежнему остаются в научном формате c.

Я просто хочу вернуть обычные числа.

Я использую:

fig = plt.figure(figsize=(30, 15))
axs = fig.add_subplot(1, 1, 1)
axs.plot()

1 Ответ

1 голос
/ 14 марта 2020

Как объяснено, здесь вы можете установить ScalarFormatter, чтобы пропустить научную c запись. .set_scientific(False) понадобится также для подавления научной нотации c для больших чисел.

Вам может понадобиться axs.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, _: '{:g}'.format(y))), если вы имеете дело с отрицательными силами.

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

fig = plt.figure(figsize=(30, 15))
axs = fig.add_subplot(1, 1, 1)
axs.plot()
axs.set_ylim(100000, 100000000)
axs.set_yscale('log')
formatter = ScalarFormatter()
formatter.set_scientific(False)
axs.yaxis.set_major_formatter(formatter)
plt.show()

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...