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

时间:2019-10-07 00:28:54

标签: 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

当我尝试对此数据进行打印时,得到以下信息:

ax = sns.barplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)

enter image description here

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

ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)

enter image description here

从图像中可以看出,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')

但是,这会产生错误。

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

1 个答案:

答案 0 :(得分:1)

sort=False会做到的。

seaborn doc指出:

  

排序:布尔值,可选

     

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

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

'30s_RELAX_PULSE' < 'POST_RELAX_PULSE' < 'PRE_RELAX_PULSE'

不想要的。

所需的行为是x值的汇总。这是通过estimator='mean'(默认)完成的。每个“脉冲量度”(y)均按“脉冲时间”(x)分组,然后计算平均值。

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

我的图以及其他示例数据:

correct order of the x variables