使用Seaborn绘制多列Pandas DataFrame

Rak*_*kmo 13 python matplotlib dataframe pandas seaborn

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

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

首选:FactorPlot,法线图.

jez*_*ael 31

你需要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)
Run Code Online (Sandbox Code Playgroud)

样品:

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)
Run Code Online (Sandbox Code Playgroud)

图形

  • 不推荐使用Factorplot。现在将其替换为[catplot](https://seaborn.pydata.org/generation/seaborn.catplot.html),绘图指令变为:g = sns.catplot(x =“ X_Axis”,y =“ vals “,hue ='cols',data = df)` (3认同)

adi*_*gil 10

除了强大的@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')
Run Code Online (Sandbox Code Playgroud)