Ответ 1
В вашем случае вы действительно хотите отключить смещение. Использование научной нотации - это отдельный параметр, показывающий вещи в терминах значения смещения.
Однако ax.ticklabel_format(useOffset=False)
должен был работать (хотя вы указали его как одну из вещей, которые этого не сделали).
Например:
fig, ax = plt.subplots()
ax.plot(range(2003,2012,1),range(200300,201200,100))
ax.ticklabel_format(useOffset=False)
plt.show()
Если вы хотите отключить как смещение, так и научную нотацию, используйте ax.ticklabel_format(useOffset=False, style='plain')
.
Разница между "смещением" и "научной записью"
В форматировании оси matplotlib "научная нотация" относится к мультипликатору для чисел, а "смещение" - это отдельный добавленный термин.
Рассмотрим следующий пример:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1000, 1001, 100)
y = np.linspace(1e-9, 1e9, 100)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
Ось x будет иметь смещение (обратите внимание на знак +
), а ось y будет использовать научную нотацию (в качестве множителя - знак "Нет плюс" ).
Мы можем отключить один отдельно. Наиболее удобным способом является метод ax.ticklabel_format
(или plt.ticklabel_format
).
Например, если мы вызываем:
ax.ticklabel_format(style='plain')
Мы отключим научную нотацию по оси y:
И если мы назовем
ax.ticklabel_format(useOffset=False)
Мы отключим смещение по оси x, но оставьте научную нотацию оси y нетронутой:
Наконец, мы можем отключить оба:
ax.ticklabel_format(useOffset=False, style='plain')