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