Forum Discussion

HamidBee's avatar
HamidBee
Power Participant
4 years ago
Solved

Stacked bar chart to clustered bar chart using a Python script

I am trying to create a clustered bar chart. My python code currently seems to have create a stacked bar chart. I'm relatively new to Python so I'm not too sure why this is. Please see below an image of what I am seeing:

 

Below is an example of the clustered bar chart that I am trying to create using a Python script:

 

I am including a link to the file below:

https://www.mediafire.com/file/7txd1k0knab2b81/Example_Table.pbix/file

 

In addition you can find the code I used below:

 

import pandas as pd
from matplotlib import pyplot as plt
plt.xlabel('Month')
plt.ylabel('Value')
plt.title('Month vs Value')
plt.bar(dataset['Month'],dataset['Total A 2021'], color='black', label='2021')
plt.bar(dataset['Month'],dataset['Total A 2020'], color='grey', label='2020')
plt.legend()
plt.show()

 

Thanks in advance.

  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi HamidBee ,

     

    To include multiple X values on the same chart, we can reduce the width of the bars and then place the indices one bar’s width further from the y axis.

     

    Please try:

    import numpy as np
    
    from matplotlib import pyplot as plt
    
    N = 12
    ind = np.arange(N) 
    width = 0.3
    plt.xlabel('Month')
    plt.ylabel('Value')
    plt.title('Month vs Value')
    plt.bar(ind,dataset['Total A 2021'],width,color='black', label='2021')
    plt.bar(ind + width,dataset['Total A 2020'], width,color='grey',label='2020')
    plt.xticks(ind + width / 2, ('Jan', 'Feb', 'Mar', 'Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
    plt.legend()
    plt.show()

     

    Refer to:

    https://benalexkeen.com/bar-charts-in-matplotlib/

     

     

    Best Regards,
    Eyelyn Qin
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi HamidBee ,

     

    To include multiple X values on the same chart, we can reduce the width of the bars and then place the indices one bar’s width further from the y axis.

     

    Please try:

    import numpy as np
    
    from matplotlib import pyplot as plt
    
    N = 12
    ind = np.arange(N) 
    width = 0.3
    plt.xlabel('Month')
    plt.ylabel('Value')
    plt.title('Month vs Value')
    plt.bar(ind,dataset['Total A 2021'],width,color='black', label='2021')
    plt.bar(ind + width,dataset['Total A 2020'], width,color='grey',label='2020')
    plt.xticks(ind + width / 2, ('Jan', 'Feb', 'Mar', 'Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
    plt.legend()
    plt.show()

     

    Refer to:

    https://benalexkeen.com/bar-charts-in-matplotlib/

     

     

    Best Regards,
    Eyelyn Qin
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.