Как предотвратить изменение чисел в экспоненциальную форму на рисунке Python Matplotlib

Я использую Matplotlib в Python для построения простых наборов данных XY. Это создает красивые графики, хотя, когда я "увеличиваю" слишком близко на различных участках построенного графика, используя представление рисунка (которое появляется, когда вы выполняете plt.show()), значения оси X изменяются от стандартной числовой формы (1050, 1060, 1070 и т. д.) к научной форме с экспоненциальной нотацией (например, 1, 1,5, 2,0 с меткой оси X, заданной как +1.057e3).

Я бы предпочел, чтобы мои фигуры сохранили простую нумерацию оси, а не экспоненциальную форму. Есть ли способ, которым я могу заставить Matplotlib сделать это?

6 ответов

Решение

Форматирование меток тиков контролируется Formatter объект, который, если вы ничего не сделали, будет ScalerFormatter по умолчанию Этот форматер будет использовать постоянное смещение, если частичное изменение видимых значений очень мало. Чтобы избежать этого, просто выключите его:

plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()

Если вы хотите избежать научной нотации в целом,

ax.get_xaxis().get_major_formatter().set_scientific(False)

Можете контролировать это с глобально через axes.formatter.useoffset rcparam.

Вы можете использовать более простую команду, чтобы отключить ее:

plt.ticklabel_format(useOffset=False)

Вы можете использовать что-то вроде:

from matplotlib.ticker import ScalarFormatter, FormatStrFormatter

ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))

Используйте следующую команду:ax.ticklabel_format(useOffset=False, style='plain')

Если вы используете подзаговор, вы можете испытать AttributeError: This method only works with the ScalarFormatter в этом случае вы бы добавили axis='y'как показано ниже. Вы можете изменить "y" на ось с проблемами.

ax1.ticklabel_format(useOffset=False, style='plain', axis='y')

Исходный вопрос и ответ здесь. Обратите внимание axis 'y' использование команды скрыто в комментариях к ответу.

Я использовал приведенный ниже код до графиков, и он работал у меня без проблем.

      plt.ticklabel_format(style='plain')

Точно я не хотел, чтобы научные числа показывались, когда я увеличиваю масштаб, и следующее, возможно, тоже сработало. Я использую широту и долготу для обозначения, когда научная форма не имеет смысла.plt.ticklabel_format(useOffset=False)

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