Несмотря на то, что этот вопрос, скорее всего, является дубликатом, вот несколько объяснений:
Без преобразования в datetime
ваша ось x неупорядочена, потому что python не понимает, что значения являются датами. Здесь он, вероятно, рисует галочку для каждой точки, потому что не знает, как вписать «16-04-2019» в непрерывном масштабе. (Попробуйте построить массив строк на оси X в качестве сравнения).
Если вы делаете , конвертируете в datetime
, seaborn
и панды достаточно умны, чтобы заметить, что ваши даты образуют непрерывную шкалу. Поскольку ticklabels
будет перекрываться при рисовании всех из них, он пропускает некоторые из них и вместо этого рисует галочки.
Вы можете повлиять на местоположение с помощью ax.set_ticks(locations)
, их стиль с помощью ax.tick_params(rotation=90, horizontal_alignment='left')
или их метки с помощью ax.set_xticklabels(labels)
. (ключевые слова в качестве примера).
Вы также можете использовать
import matplotlib.dates ad md
locs = md.YearLocator() # Locations for yearly ticks
format = md.MajorFormatter('%B %Y') # Format for labels
для доступа к функциям форматирования и ax.set_major_locator
/ formatter
для применения их к вашему графику.
Чтобы просто поставить галочку для каждой точки данных, в вашем случае используйте:
ax.set_xticks(df["Date"])