Линейный график не показывает все даты на оси - PullRequest
0 голосов
/ 14 января 2019

У меня есть следующее:

fig, ax = plt.subplots(figsize=(40, 10))
sns.lineplot(x="Date", y="KFQ imports", data=df_dry, color="BLACK", ax=ax)
sns.lineplot(x="Date", y="QRR imports", data=df_dry, color="RED",ax=ax)

ax.set(xlabel="Date", ylabel="Value", )
x_dates = df_dry['Date'].dt.strftime('%b-%Y')
ax.set_xticklabels(labels=x_dates, rotation=45)

Результат enter image description here

Когда я использую диаграмму (sns.barplot), отображается весь спектр дат. Я что-то упустил для линейного графика? Я

1 Ответ

0 голосов
/ 14 января 2019

Идея состоит в том, чтобы установить xticks точно на даты в вашем фрейме данных. Для этого вы можете использовать set_xticks(df.Date.values). Тогда может быть полезно использовать специальный форматер для дат, который позволит форматировать их так, как вы хотите.

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates
import seaborn as sns

df = pd.DataFrame({"Date" : ["2018-01-22", "2018-04-04", "2018-12-06"],
                   "val"  : [1,2,3]})
df.Date = pd.to_datetime(df.Date)


ax = sns.lineplot(data=df, x="Date", y="val", marker="o")
ax.set(xticks=df.Date.values)
ax.xaxis.set_major_formatter(dates.DateFormatter("%d-%b-%Y"))
plt.show()

enter image description here

Обратите внимание на то, как можно достичь того же без морской волны, как

ax = df.set_index("Date").plot(x_compat=True, marker="o")
ax.set(xticks=df.Date.values)
ax.xaxis.set_major_formatter(dates.DateFormatter("%d-%b-%Y"))
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...