我有以下数据框:
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)
但是,当我尝试使用线图时,会得到以下信息:
ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)
从图像中可以看出,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'
答案 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)
我的图以及其他示例数据: