是否可以将FacetGrid或relplot用于带有标签的多个时间序列线图?

问题描述

我试图用线图直观地表示一组策略,这些策略由通过聚类确定的标签分开。数据具有从1月到5月的点以及一个标签。 为简单起见,我将其更改为以下测试数据:

test_data = [[100,20,1],[20,80,100,2],[100,120,150,[150,50,[75,30,40,[200,200,75,10,5,2]]
idx_test = ["pol1","pol2","pol3","pol4","pol5","pol6"]
df_stack = pd.DataFrame(columns=["Jan","Feb","March","Apr","May","Label"],index=idx_test,data=test_data)

最好,我希望按标签分组策略的子线图。但是我对整理数据的方式有疑问。

我需要使用sns.lineplot转置数据帧,但是FacetGrid或relplot无法再使用label列。

我可以在一个图形上获得所有线图:

df_stack2= df_stack.drop("Label",axis=1)
sns.lineplot(data=df_stack2.T,dashes=False,legend=False,sort=False)

我可以获得FacetGrid的基础知识:

g = sns.FacetGrid(df_stack,col="Label")

有人可以帮助我解决如何绘制线图吗?

解决方法

为解决上述问题,我发现使用pd.melt()有助于构造数据,以便可以使用sns.FacetGrid()

df_stack.rename(columns={"index":"Pols"},inplace=True)
melted = pd.melt(df_stack,id_vars=["Pols","Label"])

g = sns.FacetGrid(melted,col="Label",col_wrap=3,hue="Pols")
g.map(sns.lineplot,"variable","value",sort=False)

希望能帮助其他迷失在Seaborn / Pandas迷宫中的人。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...