无法在seaborn lineplot [python]中设置自定义时间戳xticks

问题描述 投票:0回答:1

我的数据框如下所示:

我们看到给定日期/时间时间戳的类别值,显示年、月、日和时间。

在seaborn中绘制为线图,x轴如下所示:

这里我们看到日期/时间 x 轴刻度线显示月、日和小时。

我想要完成的是将日期/时间 x 刻度线重新格式化为仅显示时间,因此从 00:00 开始,总共有 6 个刻度线,因此在整个学习日中,继续从 04 开始: 00、08:00、12:00、16:00、20:00、00:00。

我尝试使用此代码来重置日期/时间格式:

x_dates = df['Date/Time'].dt.strftime('%H:%M').sort_values().unique()
dataplot.set_xticklabels(labels=x_dates, rotation=45, ha='right')

现在我的 x 轴刻度如下所示:

我不明白为什么时间从 00:30 到 04:30。也就是说我的学习只持续到下午4点30分?我不知道这是否应该是军事时间。我的学习数据持续24小时,所以我不明白为什么这段代码将数据更改为04:30结束。

然后我尝试通过添加来更改 x 轴刻度线的数量:

dataplot.set_xticks(6)

但这只会导致这个错误:

TypeError: object of type 'int' has no len()

如何修复 x 刻度的日期/时间字符串格式,使其仅显示 24 小时内的时间,而不显示年、月或日,并以 6 刻度标记显示?我正在将seaborn与Python一起使用。

python datetime seaborn strftime
1个回答
0
投票

您只有 9 个 xticks,因此您在代码中所做的就是用

x_dates
的前 9 个值替换这些值。 Seaborn 不知道
x_dates
与您制作的绘图有何关系,因此它只采用前 9 个值。

如果每项研究只运行一天,解决此问题的最简单方法是创建一个仅包含时间的新列,然后使用该列进行绘图。

df['time'] = df['Date/Time'].dt.strftime('%H:%M')

© www.soinside.com 2019 - 2024. All rights reserved.