Pandas, Seaborn, Plot boxplot with 2 columns and a 3º as hue

Question:

in a Pandas Df with 3 variables i want to plot 2 columns in 2 different boxes and the 3rd column as hue with seaborn

I can reach the first step with pd.melt but I cant insert the hue and make it work

This is what I have:

df=pd.DataFrame({'A':['a','a','b','a','b'],'B':[1,3,5,4,7],'C':[2,3,4,1,3]})
df2=df[['B','C']].copy()
sb.boxplot(data=pd.melt(df2), x="variable", y="value",palette= 'Blues') 

enter image description here

I want to do this in the first DF, setting variable ‘A’ as hue
Can you help me?

Thank you

Asked By: SERGIO

||

Answers:

IIUC, you can achieve this as follows:

  • Apply df.melt, using column A for id_vars, and ['B','C'] for value_vars.
  • Next, inside sns.boxplot, feed the melted df to the data parameter, and add hue='A'.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({'A':['a','a','b','a','b'], 'B':[1,3,5,4,7], 'C':[2,3,4,1,3]})

sns.boxplot(data=df.melt(id_vars='A', value_vars=['B','C']), 
            x='variable', y='value', hue='A', palette='Blues')

plt.show()

Result

boxplot

Answered By: ouroboros1
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.