Function to create grouped bar plot

前端 未结 2 1382
北恋
北恋 2020-12-05 11:12

The goal here is to create a grouped bar plot, not subplots like the image below

Is there a simple way to create a grouped bar plot in Python? Right

相关标签:
2条回答
  • 2020-12-05 11:49

    You can simply do this using the code given below:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    positive_values = [20, 17.5, 40]
    negative_values = [15, 8, 70]
    index = ['Precision', 'Recall', 'f1-score',]
    df = pd.DataFrame({'Positive Values': positive_values,
                        'Negative Values': negative_values}, index=index)
    ax = df.plot.bar(rot=0, color={"Positive Values": "green", "Negative Values": "red"})
    

    Output:

    0 讨论(0)
  • 2020-12-05 11:51

    Pandas will show grouped bars by columns. Entries in each row but different columns will constitute a group in the resulting plot. Hence you need to "reshape" your dataframe to have the "group" as columns. In this case you can pivot like

    df.pivot("column", "group", "val")
    

    producing

    group   g1  g2
    column        
    c1      10   8
    c2      12  10
    c3      13  12
    

    Plotting this will result in a grouped bar chart.

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],
                       ['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])
    
    df.pivot("column", "group", "val").plot(kind='bar')
    
    plt.show()
    

    0 讨论(0)
提交回复
热议问题