簡體   English   中英

Seaborn 線圖,當您的數據索引為日期時顯示月份

[英]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 軸上顯示每年的多個(不是全部,例如每個季節的第一個月)月份。

提前感謝大家的時間。

您可以使用MonthLocatorConciseDateFormatter來添加顯示幾個月的次要刻度,如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM