Построение графика на matplotlib с датами на оси x показывает только некоторые даты

У меня есть 2 массива:


 dates = [datetime.date(2019, 12, 9), datetime.date(2019, 12, 10),
       datetime.date(2019, 12, 12), datetime.date(2019, 12, 13),
       datetime.date(2019, 12, 14), datetime.date(2019, 12, 15),
       datetime.date(2019, 12, 16), datetime.date(2019, 12, 17),
       datetime.date(2019, 12, 18), datetime.date(2019, 12, 19)]

counts = [10, 2, 48067, 49791, 35347, 39418, 38817, 34269, 28066,
       22212]

Я пытаюсь создать график, который будет показывать каждую из дат, но получаю только несколько

plt.figure(figsize=(100,10))

fig.tight_layout()
plt.xticks(rotation=90)

plt.plot(dates, counts)


plt.show()

Я пытался следовать этому, но у меня все еще были те же результаты - не получить все даты на оси х

Всего 1 ответ


После того как вы построите график, вы можете создать DateLocator и DateFormatter чтобы изменить формат и частоту тиков x. Полный код с комментариями ниже.

import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates

dates = [datetime.date(2019, 12, 9), datetime.date(2019, 12, 10),
         datetime.date(2019, 12, 12), datetime.date(2019, 12, 13),
         datetime.date(2019, 12, 14), datetime.date(2019, 12, 15),
         datetime.date(2019, 12, 16), datetime.date(2019, 12, 17),
         datetime.date(2019, 12, 18), datetime.date(2019, 12, 19)]

counts = [10, 2, 48067, 49791, 35347, 39418, 38817, 34269, 28066, 22212]


plt.figure(figsize=(100,10))
fig.tight_layout()
plt.xticks(rotation=90)
plt.plot(dates, counts)

ax=plt.gca()
# Find the days in the data
days = mdates.DayLocator()
# Format the days in the data
days_fmt = mdates.DateFormatter('%D')
# Set xaxis to use the day locator
ax.xaxis.set_major_locator(days)
# Set xaxis to use the day formatter
ax.xaxis.set_major_formatter(days_fmt)

plt.show()

Это дает следующий график, где все дни отображаются с отдельными галочками.

введите описание изображения здесь

Для подробного примера с большим количеством форматов дат, посмотрите этот пример .


Есть идеи?

10000