问题描述
我试图用线图直观地表示一组策略,这些策略由通过聚类确定的标签分开。数据具有从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迷宫中的人。