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


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

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

3 62

3 ответа:

форматирование меток тиков контролируется с помощью 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'))