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

Добавление дополнительных осевых тиков с использованием matplotlib

У меня есть простой код в виде

plt.plot(x,y)
plt.show()

Я хочу добавить некоторые дополнительные тики по оси x в дополнение к текущим, допустим,

extraticks=[2.1, 3, 7.6]

Как вы видите, у меня нет шаблона для тиков, поэтому я не хочу увеличивать частоту тика для всей оси; просто сохраните оригинальные и добавьте эти дополнения...

Возможно ли вообще?

Привет

4b9b3361

Ответ 1

Да, вы можете попробовать что-то вроде:

plt.xticks(list(plt.xticks()[0]) + extraticks)

Используемая функция xticks(). При вызове без аргументов он возвращает текущие тики. Вызывая его с помощью аргументов, вы можете установить позиции тика и, необязательно, метки.

Ответ 2

Для полноты, я хотел бы дать версию OO @Lev-Levitsky отличный ответ:

lines = plt.plot(x,y)
ax = lines[0].axes
ax.set_xticks(list(ax.get_xticks()) + extraticks)

Здесь мы используем объект Axes, извлеченный из последовательности Lines2D, возвращаемой plot. Обычно, если вы используете интерфейс OO, у вас уже есть ссылка на Axes спереди, и вы бы набрали plot, а не на pyplot.

Предостережение по углам

Если по какой-то причине вы изменили свои пределы оси (например, с помощью программного масштабирования части данных), вам необходимо будет восстановить их после этой операции:

lim = ax.get_xlim()
ax.set_xticks(list(ax.get_xticks()) + extraticks)
ax.set_xlim(lim)

В противном случае график заставит ось x показать все доступные тики на оси.