Подтвердить что ты не робот

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

Я использую Matplotlib в Python для построения простых наборов данных x-y. Это создает красиво выглядящие графики, хотя, когда я "приближаю" слишком близко к различным разделам графического графика, используя вид рисунка (который появляется, когда вы выполняете plt.show()), значения оси x меняются от формы стандартного номера (1050, 1060, 1070 и т.д.) В научную форму с экспоненциальным обозначением (например, 1, 1.5, 2.0 с меткой оси x, указанной как +1.057e3).

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

4b9b3361

Ответ 1

Форматирование меток tick управляется объектом 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.

Ответ 2

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

plt.ticklabel_format(useOffset=False)

Ответ 3

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

from matplotlib.ticker import ScalarFormatter, FormatStrFormatter

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