如何更改seaborn lineplot中x轴标签的顺序?

ark*_*diy 6 python python-3.x pandas seaborn

我有以下数据框:

df1_Relax_Pulse_Melted.head()

Task    Pulse Time  Pulse Measure
0   Language    PRE_RELAX_PULSE 90.0
1   Language    PRE_RELAX_PULSE 94.0
2   Language    PRE_RELAX_PULSE 52.0
3   Language    PRE_RELAX_PULSE 70.0
4   Language    PRE_RELAX_PULSE 84.0
Run Code Online (Sandbox Code Playgroud)

当我尝试绘制此数据的条形图时,我得到以下信息:

ax = sns.barplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但是,当我尝试使用线图时,我得到以下信息:

ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

从图中可以看出,x 轴标签的顺序与条形图的顺序不同。是否可以更改线图中 x 轴的顺序?我尝试在 sns.lineplot 中使用“order”函数,如下所示:

ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted, order='PRE_RELAX_PULSE','30S_RELAX_PULSE','POST_RELAX_PULSE')
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误。

``AttributeError: 'Line2D' 对象没有属性 'order'

twe*_*ini 11

sort=False 会做的。

正如seaborn doc所说:

排序:布尔值,可选

如果为 True,数据将按 x 和 y 变量排序,否则线将按照它们在数据集中出现的顺序连接点。

x 变量按其“字符串顺序”排序:

'30s_RELAX_PULSE' < 'POST_RELAX_PULSE' < 'PRE_RELAX_PULSE'
Run Code Online (Sandbox Code Playgroud)

这是不想要的。

想要的行为是 x 值的聚合。这是通过estimator='mean'(默认)完成的。每个“脉冲测量”(y) 都按“脉冲时间”(x) 分组,然后计算平均值。

ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task",sort= False, data=df1_Relax_Pulse_Melted)
Run Code Online (Sandbox Code Playgroud)

我与其他示例数据的情节:

x 变量的正确顺序