Тики по оси x отображаются с интервалом в 5. Есть ли способ заставить его отображать интервалы в 1?
Переведено автоматически
Ответ 1
Вы могли бы явно указать, где вы хотите ставить галочки с помощью plt.xticks:
plt.xticks(np.arange(min(x), max(x)+1, 1.0))
Например,
import numpy as np import matplotlib.pyplot as plt
x = [0,5,9,10,15] y = [0,1,2,3,4] plt.plot(x,y) plt.xticks(np.arange(min(x), max(x)+1, 1.0)) plt.show()
(np.arange использовалась вместо range функции Python на всякий случай, min(x) и max(x) являются числами с плавающей запятой вместо целых чисел.)
Функция plt.plot (or ax.plot) автоматически установит значения по умолчанию x и y ограничения. Если вы хотите сохранить эти ограничения и просто изменить размер шага тиков, то вы могли бы использовать ax.get_xlim(), чтобы узнать, какие ограничения Matplotlib уже установил.
start, end = ax.get_xlim() ax.xaxis.set_ticks(np.arange(start, end, stepsize))
Форматировщик тиков по умолчанию должен выполнять достойную работу по округлению значений тиков до разумного количества значащих цифр. Однако, если вы хотите иметь больший контроль над форматом, вы можете определить свой собственный форматировщик. Например,
import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as ticker
x = [0,5,9,10,15] y = [0,1,2,3,4] fig, ax = plt.subplots() ax.plot(x,y) start, end = ax.get_xlim() ax.xaxis.set_ticks(np.arange(start, end, 0.712123)) ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f')) plt.show()
Ответ 2
Другой подход заключается в установке локатора оси:
import matplotlib.ticker as plticker
loc = plticker.MultipleLocator(base=1.0) # this locator puts ticks at regular intervals ax.xaxis.set_major_locator(loc)
Существует несколько различных типов локаторов в зависимости от ваших потребностей.
Вот полный пример:
import matplotlib.pyplot as plt import matplotlib.ticker as plticker
x = [0,5,9,10,15] y = [0,1,2,3,4] fig, ax = plt.subplots() ax.plot(x,y) loc = plticker.MultipleLocator(base=1.0) # this locator puts ticks at regular intervals ax.xaxis.set_major_locator(loc) plt.show()
Это решение дает вам явный контроль над интервалом между тиками с помощью числа, заданного в ticker.MultipleLocater(), позволяет автоматически определять лимит и легко читается позже.
Ответ 4
Если кого-то интересует общий однострочный алгоритм, просто получите текущие тики и используйте его для установки новых тиков путем выборки каждого второго тика.