Skip to content
Advertisement

How to plot a bar-plot with only one bar colored?

name grade
chandler A
joey B
phoebe B
monica C
ross A
rachel B
mike C
gunther A
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

class2 = [['chandler','A'],
          ['joey','B'],
          ['phoebe','B'],
          ['monica', 'C'],
          ['ross','A'],
          ['rachel','B'],
          ['mike','C'],
          ['gunther','A']]
data= pd.DataFrame(class2, columns=['name','grade'])
print(data)
fig, ax = plt.subplots()
ax= sns.countplot(x='grade', data = data, color='yellow')
plt.show()

How to proceed from here if I want to make 8 different report cards (small graph in A4 size paper), and highlight the grade category in which the student belongs?

Edit: I want to show gunther in which group he falls in. And I want to show this to all students in which category they belong. For that, I need 8 different images to send them. How to get those 8 images?

Advertisement

Answer

If I understand correctly, you want something like this:

gb = data.groupby('grade').apply(len)


for student, grade in class2:
    fig, ax = plt.subplots()
    
    colors = ['red' if a == grade else 'grey' for a in gb.index.values ]
    
    gb.plot(kind='bar', color = colors, ax=ax)
    plt.show()
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement