Home > Software design >  How to plot multiple columns into a single seaborn boxenplot
How to plot multiple columns into a single seaborn boxenplot

Time:11-30

I have my two graphs on top of each other and I would like to put them next to each other but I don't know how to do it?

code :

import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="whitegrid")
boxenplot_graph = sns.boxenplot(x=expeditions["nbre_members"], color = "r")
boxenplot_graph2 = sns.boxenplot(x=expeditions["hired_staff"],color = "b")
plt.xlabel("Nombre de members/hired_staff")
plt.title("Répartition du nombre de membres/hired_staff")
#plt.gca().legend(('membres', 'morts'))
plt.legend(["members", "hired_staff"],['rouge', 'bleu'])

CodePudding user response:

  • Convert the columns to a long form with enter image description here

    Given a 3rd column

    • This option uses a 3rd column for hue=
    # melt columns and have an id variable
    dfm = tips[['total_bill', 'tip', 'smoker']].melt(id_vars='smoker')
    
    # display(dfm.head(3))
      smoker    variable  value
    0     No  total_bill  16.99
    1     No  total_bill  10.34
    2     No  total_bill  21.01
    
    # plot
    fig, ax = plt.subplots(figsize=(6, 4))
    p = sns.boxenplot(data=dfm, x='value', y='variable', hue='smoker', ax=ax)
    p.set(ylabel='My yLabel', xlabel='My xLabel')
    plt.show()
    

    enter image description here

    CodePudding user response:

    use subplots if you had two different datasets expeditions1 and expeditions2

    import pandas as pd 
    import matplotlib.pyplot as plt
    import seaborn as sns
    expeditions1=np.random.random_integers(1, 100, size=500)
    expeditions2=np.random.random_integers(1, 1000, size=500)
    sns.set_theme(style="whitegrid")
    fig,ax=plt.subplots(2,figsize=(10,10))
    boxenplot_graph = sns.boxenplot(y=expeditions1, color = "r",ax=ax[0])
    ax[0].set_title("One boxenplot")
    boxenplot_graph2 = sns.boxenplot(y=expeditions2,color = "b",ax=ax[1])
    plt.xlabel("hired staff")
    ax[1].set_title("Two boxenplot")
    #plt.gca().legend(('membres', 'morts'))
    plt.legend(["members", "hired_staff"],['rouge', 'bleu'])
    
  • Related