Может быть, это постоянная проблема здесь. Хотя я задавал старые вопросы на сайте, я не смог полностью решить свою проблему. Некоторые старые темы форума мне очень помогли:
Показать даты на карте тепла морского ежа
Тепловая карта Сиборна с осями даты и времени
Ось даты в морской карте тепловых карт
Ось даты в морской карте тепловых карт
Но после долгих попыток я все никак не мог понять.
Моя проблема заключается в следующем:
У меня есть такой фрейм данных (но оригинал гораздо более обширный - индекс дат с 2004 по 2018 год с интервалом в один час).
Estreito Furnas Manso Itumbiara Curuai
2004-01-19 15:00:00 NaN NaN 3.73 NaN NaN
2004-01-19 16:00:00 NaN NaN 5.10 NaN NaN
2004-01-19 17:00:00 NaN NaN 5.10 NaN NaN
2004-01-19 18:00:00 NaN NaN NaN NaN NaN
2004-01-19 19:00:00 NaN NaN 4.31 NaN NaN
2004-01-19 20:00:00 NaN NaN 4.90 NaN NaN
2004-01-19 21:00:00 NaN NaN 5.88 NaN NaN
2004-01-19 22:00:00 NaN NaN 7.06 NaN NaN
2004-01-19 23:00:00 NaN NaN 4.71 NaN NaN
2004-01-20 00:00:00 NaN NaN NaN NaN NaN
2004-01-20 01:00:00 NaN NaN 7.25 NaN NaN
2004-01-20 02:00:00 NaN NaN 5.10 NaN NaN
2004-01-20 03:00:00 NaN NaN 2.55 NaN NaN
2004-01-20 04:00:00 NaN NaN 0.39 NaN NaN
2004-01-20 05:00:00 NaN NaN 0.20 NaN NaN
Я хотел бы показать отсутствующие данные на графике, поэтому я использую тепловую карту модуля seaborn.
Следуя документации и старым темам форума, я получаю следующий скрипт.
import matplotlib.pyplot as plt
import seaborn as sns
df_transposed = df.transpose()
plt.subplots(1,1,figsize=(12,6))
ax = sns.heatmap(df_transposed.isnull(), cbar=False)
x_dates = df.index.strftime('%Y-%m').sort_values().unique()
ax.set_xticklabels(labels=x_dates, rotation=45)
Я получил следующую цифру:
Но, как видите, xticklabels не очень хороши. И, читая документацию Seaborn, я не смог найти никаких аргументов для установки количества xticks.
Я пытался назначить xticklabels только годами:
x_dates = df.index.strftime('%Y').sort_values().unique()
Но это не так хорошо работает:
Я скромно прошу помощи в решении этой проблемы. Прошу прощения, если я не по теме.
Большое спасибо заранее.