如何在 matplotlib 中仅将星期一放在 xticks 上

How to put only Mondays on xticks in matplotlib

我有以下代码:

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.dates import MO, WeekdayLocator

sns.lineplot(x="datum", y="people", data=data_s, hue="expedice")
plt.ylabel("People")
plt.xlabel("Datum")

loc = WeekdayLocator(byweekday=MO, interval=1)

plt.xticks(rotation=90)
plt.legend(loc = 'upper right', bbox_to_anchor=(1.2, 0.5))
plt.show()

这给了我这个输出:

但我只想在每个星期一显示 xticks,因为现在它根本无法辨认。请问我该怎么做?

目前定位器已创建但从未实际应用,而且 x 刻度看起来可能是字符串而不是日期时间,因此:

  1. 确保日期已转换to_datetime
  2. 应用WeekdayLocator using set_major_locator
import pandas as pd
from matplotlib.dates import MO, WeekdayLocator

#1 convert to datetime
data_s["datum"] = pd.to_datetime(data_s["datum"])

ax = sns.lineplot(x="datum", y="people", data=data_s, hue="expedice")

#2 apply weekday locator
loc = WeekdayLocator(byweekday=MO, interval=1)
ax.xaxis.set_major_locator(loc)