使用Seaborn绘制多列Pandas DataFrame

时间:2017-07-06 06:14:27

标签: python pandas matplotlib dataframe seaborn

假设我的DataFrame包含列['X_Axis','col_2','col_3',...,'col_n',]

我需要在X轴上绘制第一列并在Y轴上绘制。 仅供参考:所有值均已根据X轴进行分组,X轴值范围为0-25,所有其他列值已标准化为0 - 1。我希望它在同一个图表上,而不是子图。

首选:FactorPlot,法线图。

2 个答案:

答案 0 :(得分:22)

您需要melt重新塑造seaborn.factorplot

df = df.melt('X_Axis', var_name='cols', value_name='vals')
#alternative for pandas < 0.20.0
#df = pd.melt(df, 'X_Axis', var_name='cols',  value_name='vals')
g = sns.factorplot(x="X_Axis", y="vals", hue='cols', data=df)

样品:

df = pd.DataFrame({'X_Axis':[1,3,5,7,10,20],
                   'col_2':[.4,.5,.4,.5,.5,.4],
                   'col_3':[.7,.8,.9,.4,.2,.3],
                   'col_4':[.1,.3,.5,.7,.1,.0],
                   'col_5':[.5,.3,.6,.9,.2,.4]})

print (df)
   X_Axis  col_2  col_3  col_4  col_5
0       1    0.4    0.7    0.1    0.5
1       3    0.5    0.8    0.3    0.3
2       5    0.4    0.9    0.5    0.6
3       7    0.5    0.4    0.7    0.9
4      10    0.5    0.2    0.1    0.2
5      20    0.4    0.3    0.0    0.4

df = df.melt('X_Axis', var_name='cols',  value_name='vals')
g = sns.factorplot(x="X_Axis", y="vals", hue='cols', data=df)

graph

答案 1 :(得分:0)

对于那些来自google的人,除了强大的@jezrael之外,如果您打算绘制具有原始数据帧索引的行,请执行以下操作:

df = pd.DataFrame({'col_2':[.4,.5,.4,.5,.5,.4],
                   'col_3':[.7,.8,.9,.4,.2,.3],
                   'col_4':[.1,.3,.5,.7,.1,.0],
                   'col_5':[.5,.3,.6,.9,.2,.4]})

# resetting index before melting to save the current index in 'index' column...
df = df.reset_index().melt('index', var_name='cols',  value_name='vals')
g = sns.catplot(x="index", y="vals", hue='cols', data=df, kind='point')