Идея состоит в том, чтобы установить 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](https://i.stack.imgur.com/Dh1RJ.png)
Обратите внимание на то, как можно достичь того же без морской волны, как
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()