python matplotlib ax.get_xticks() не получает текущее местоположение xtick

#python #matplotlib

#python #matplotlib

Вопрос:

Я запускаю прикрепленный код. На рисунке тики помечены от 0 до 1 с шагом 0,2, но я получаю от -0,2 до 1,2, запустив ax.get_xticks() . Это ошибка, не так ли?

 import matplotlib.pyplot as plt
fig = plt.figure()
plt.ion()
ax = fig.add_subplot(111)
ax.get_xticks()
ax.plot([-0.05, 1.06], [0.4, 0.5])
ax.get_xticks()
  

Я ожидал получить массив([0. , 0.2, 0.4, 0.6, 0.8, 1.]) кроме массива([-0.2, 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2])

Ответ №1:

Это не ошибка. Построение графика непосредственно за пределами диапазона от 0 до 1 по умолчанию на оси x приведет к добавлению дополнительных тиков для изменения масштаба оси в соответствии с новым диапазоном данных. Однако они не отображаются, потому что они находятся за пределами xlim границ.

Вы можете убедиться в этом, установив галочки и xlim вручную:

 fig = plt.figure()
plt.ion()
ax = fig.add_subplot(111)
ax.plot([-0.05, 1.06], [0.4, 0.5])
xlim = ax.get_xlim()
ax.set_xticks([-100.0, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 100.0])
ax.set_xlim(xlim)
  

Чтобы получить, какие xticks показаны, вы можете использовать:

 x0, x1 = ax.get_xlim()
visible_ticks = [t for t in ax.get_xticks() if t>=x0 and t<=x1]
  

Комментарии:

1. хорошо, я должен сбросить местоположения xtick при переназначении тиков. Я обнаружил, что мои данные находятся за пределами значений по умолчанию от 0 до 1. Тем не менее, я все же думаю, что было бы лучше, если ax.get_ticks вернет те же местоположения тиков, что и на рисунках, что может быть более удобным для нас. Спасибо

2. Я добавил фрагмент, чтобы получить видимые местоположения xtick. Я думаю, вы правы. Вам действительно не нужно проверять, находятся ли xticks в пределах xlim, чтобы увидеть, видны ли они.