#python #matplotlib #axis #axis-labels
Вопрос:
На этом графике matplotlib автоматически скрывает первую и последнюю метки осей. Однако желаемое поведение состоит в том, чтобы всегда показывать как первую, так и последнюю метки оси, и это тоже «хорошее» значение. Под «хорошим» значением я подразумеваю, что основной тик должен присутствовать на обеих границах оси. Например, на рисунке, показанном ниже, ось x начиналась бы с -0,1 и заканчивалась на 1,5. Аналогично, ось y начиналась бы с -0,25 и заканчивалась на 2,00. Как этого можно достичь в Matplotlib?
Заранее спасибо за вашу помощь.
Комментарии:
1. Устраняет ли это проблему?
plt.xticks(x)
2. Ищите
plt.MaxNLocator()
ax.set_xticklabels()
и используйте их.3. Это просто сбрасывает последнюю галочку из-за ошибки округления. Set_ylim(-0.1, 2.0001) должен показывать галочки.
4. @JodyKlymak Я не хочу устанавливать ограничение вручную, так как диапазон отличается в каждом вызове.
5. @swatchai Я искал оба этих варианта, но ни один не помог. Я думаю, что проблема будет решена, если мы сможем добавить по одному дополнительному галочке на обоих краях оси. Но я не мог найти способ сделать это с
AutoLocator()
помощью операционнойMaxNLocator()
Ответ №1:
Я решил эту проблему, сначала позволив matplotlib
найти идеальные места для галочек, а затем установив пределы оси таким образом, чтобы на обоих краях оси добавлялся один дополнительный тик.
plt.figure()
plt.plot(xdata, data)
loc, labels = plt.xticks() #returns the current tics and lables.
min_new = loc[0] - (loc[1]-loc[0])
max_new = loc[len(loc)-1] (loc[1]-loc[0])
plt.xlim(left=min_new, right=max_new)
plt.gca().xaxis.set_major_locator(AutoLocator())
plt.gca().yaxis.set_major_locator(AutoLocator())
plt.show()
Изменить:
То же самое можно было бы также достичь, расширив пределы оси до скрытых отметок по краям. т. е.,
loc, labels = plt.xticks()
plt.xlim(left=loc[0], right=loc[len(loc)-1])