[英]Seaborn lineplot, show months when index of your data is Date
我有一個 Kaggle 數據集( 鏈接)。 我閱讀了數據集,並將Date
設置為索引列:
museum_data = pd.read_csv("museum_visitors.csv", index_col = "Date", parse_dates = True)
然后, museum_data
就像:
日期 | 阿維拉土坯 | 消防站博物館 | 華裔美國人博物館 | 美國熱帶解說中心 |
---|---|---|---|---|
2014-01-01 | 24778 | 4486 | 1581 | 6602 |
2014-02-01 | 18976 | 4172 | 1785 | 5029 |
... | ... | ... | ... | ... |
2018-10-01 | 19280 | 4622 | 2364 | 3775 |
2018-11-01 | 17163 | 4082 | 2385 | 4562 |
這是我用於 plot lineplot
中的線圖的代碼:
plt.figure(figsize = (20,8))
sns.lineplot(data = museum_data)
plt.show()
我想知道的是,我如何在 x 軸上顯示每年的多個(不是全部,例如每個季節的第一個月)月份。
提前感謝大家的時間。
您可以使用MonthLocator
和ConciseDateFormatter
來添加顯示幾個月的次要刻度,如下所示:
import matplotlib.dates as mdates
...
fig, ax = plt.subplots(figsize = (20,8))
sns.lineplot(data = museum_data, ax=ax)
locator = mdates.MonthLocator(bymonth=[4,7,10])
ax.xaxis.set_minor_locator(locator)
ax.xaxis.set_minor_formatter(mdates.ConciseDateFormatter(locator))
Output:
編輯(更接近):您也可以添加以下內容以顯示一月:
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
Output:
編輯2 (可能有更好的方法,但我生疏了):
length = plt.rcParams["xtick.minor.size"]
pad = plt.rcParams['xtick.minor.pad']
ax.tick_params('x', length=length, pad=pad)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.