Линейный сюжет Seaborn неправильно показывает часть xticks. Как это исправить? - PullRequest
0 голосов
/ 30 апреля 2020

Это мой код:

fig, ax = plt.subplots(4,3, figsize=(16,6), sharex=True)

col = df.columns
index = 0

for i in range(4):
    for j in range(3):
        sns.lineplot(x=df.index, y=df[col[index]], ax=ax[i][j])
        ax[i][j].set_xticklabels(df.index, rotation=45, ha='right')
        index = index + 1

plt.tight_layout()

Однако я получаю следующий вывод. Только несколько дней января показаны как xticks, тогда как диапазон данных с 1 января по 28 апреля в моем кадре данных. Также обратите внимание, что xticks являются временными метками, хотя в кадре данных отображаются только даты. Я хочу только даты в xticks. Как их исправить?

enter image description here

Большое спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Проблема исходит от линии ax[i][j].set_xticklabels(df.index, rotation=45, ha='right'). Вы заменяете несколько тиков, которые были автоматически выбраны matplotlib, на первые несколько значений вашего индекса даты.

Вместо этого я бы использовал plt.setp(ax.get_xticklabels(), rotation=45, ha='right') для изменения поворота существующих меток.

Обратите внимание, что вы установили sharex=True, поэтому вам не нужно выполнять эту операцию на всех осях, достаточно просто применить одну из них для глобального применения

for i in range(4):
    for j in range(3):
        sns.lineplot(x=df.index, y=df[col[index]], ax=ax[i][j])
        index = index + 1

plt.setp(ax[0,0].get_xticklabels(), rotation=45, ha='right')
plt.tight_layout()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...