Seaborn 线图,显示数据索引为日期的月份
Seaborn lineplot, show months when index of your data is Date
我有一个 Kaggle 数据集 (link)。
我读取了数据集,并将 Date
设置为索引列:
museum_data = pd.read_csv("museum_visitors.csv", index_col = "Date", parse_dates = True)
那么,museum_data
就像:
Date
Avila Adobe
Firehouse Museum
Chinese American Museum
America Tropical Interpretive Center
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
这是我用来在 seaborn 中绘制 lineplot
的代码:
plt.figure(figsize = (20,8))
sns.lineplot(data = museum_data)
plt.show()
结果是这样的:
我想知道的是,如何在 x 轴上显示每年的多个(不是全部,例如每个季节的第一个月)月份。
提前谢谢大家的宝贵时间。
您可以使用 MonthLocator
and perhaps 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))
输出:
编辑(更接近):您可以添加以下内容以显示一月:
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
输出:
编辑 2(可能有更好的方法,但我生疏了):
length = plt.rcParams["xtick.minor.size"]
pad = plt.rcParams['xtick.minor.pad']
ax.tick_params('x', length=length, pad=pad)
我有一个 Kaggle 数据集 (link)。
我读取了数据集,并将 Date
设置为索引列:
museum_data = pd.read_csv("museum_visitors.csv", index_col = "Date", parse_dates = True)
那么,museum_data
就像:
Date | Avila Adobe | Firehouse Museum | Chinese American Museum | America Tropical Interpretive Center |
---|---|---|---|---|
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 |
这是我用来在 seaborn 中绘制 lineplot
的代码:
plt.figure(figsize = (20,8))
sns.lineplot(data = museum_data)
plt.show()
结果是这样的:
我想知道的是,如何在 x 轴上显示每年的多个(不是全部,例如每个季节的第一个月)月份。
提前谢谢大家的宝贵时间。
您可以使用 MonthLocator
and perhaps 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))
输出:
编辑(更接近):您可以添加以下内容以显示一月:
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
输出:
编辑 2(可能有更好的方法,但我生疏了):
length = plt.rcParams["xtick.minor.size"]
pad = plt.rcParams['xtick.minor.pad']
ax.tick_params('x', length=length, pad=pad)