Estou tentando traçar um dataframe do pandas, mas não consigo mostrar os rótulos nos ticks secundários
O dataframe é algo assim:
day_of_week hour count
0 0 150
0 1 673
...
1 0 734
1 1 35
...
onde day_of_week
é o dia da semana (segunda, terça, etc) e hour
são os horários do dia de 0 a 23.
Quero representar graficamente essa quantidade como uma série temporal e mostrar os ticks principais como meia-noite e mudança do dia seguinte e os ticks menores a cada 6 horas.
Modifiquei um pouco o dataframe e tentei plotá-lo, esse é o código:
days = {0: "Mon", 1: "Tue", 2: "Wed", 3: "Thu", 4: "Fri", 5: "Sat", 6: "Sun"}
df["dow"] = df["day_of_week"].apply(lambda x: days.get(x))
df["axis"] = (df["dow"] + " " + df["hour"].astype(str))
fig, ax = plt.subplots()
ax.plot(time_tweets["axis"], time_tweets["count"])
ax.grid(which="major", axis="x", linestyle="-", linewidth=2)
ax.xaxis.set_major_locator(MultipleLocator(24))
ax.xaxis.set_minor_locator(MultipleLocator(6))
plt.xticks(rotation=45, minor=True, ha="right")
plt.xticks(rotation=45, minor=False, ha="right")
Isso não plota o rótulo nos ticks menores, todo o resto está bem, os ticks principais e o rótulo, os ticks menores e a grade apenas nos ticks maiores.
Tentei adicionar plt.minorticks_on()
ou plt.setp(ax.get_xticklabels(minor=True), visible=True)
, mas nada de rótulo nos ticks menores.
Você tem alguma sugestão?
Se você criar datas falsas, poderá usar
DayLocator
eHourLocator
:Saída: