【发布时间】:2019-12-27 23:40:04
【问题描述】:
所以我有一个索引作为日期时间对象的数据框。 我创建了一个新列来指示数据框中每个“骑行”的月份:
import numpy as np
import datetime as dt
from datetime import datetime
months = df.index.to_series().apply(lambda x:dt.datetime.strftime(x, '%b %Y')).tolist()
df['months'] = months
df1 = df[['distance','months']]
这给出了:
当我尝试使用 seaborn 以月份为 x 轴将其绘制到折线图上时,它会按字母顺序对其进行排序,从 4 月开始,然后是 8 月,等等。
l = sns.lineplot(x='months',y='distance',data=df1)
plt.xticks(rotation=45)
我真的不明白为什么在我使用的数据框中这样做,月份根据月份按升序排序。有没有办法让我的 x 轴从 2018 年 1 月开始,到 2019 年 7 月结束?
【问题讨论】:
-
你试过
l = sns.lineplot(x='months',y='distance',data=df1, sort=True)吗? -
是的,我有,它不起作用。这很奇怪,因为当我将
sns.countplot(x='months',data=df1) plt.xticks(rotation=45)与完全相同的数据框一起使用时,它会为我排序。 -
您已经创建了日期字符串,我猜 seaborn 正在为您排序。相反,保留为日期,并将定位器设置为月份定位器,并将格式化程序设置为日期格式化程序。 matplotlib.org/3.1.1/gallery/text_labels_and_annotations/… 应该让你朝着正确的方向前进
标签: python pandas numpy matplotlib seaborn