Python: Plt Bar Plot - Different Colors
In Python, how can I make the 'reported' bars green, and 'UNREPORTED' bars red? I want to give different color to each of the reported and UNREPORTED bars in my graph. new = (('AXI
Solution 1:
You can iterate over the bars and check if for the given index, the report is 'UNREPORTED'. If this is the case, colorize the bar using set_color
.
import seaborn as sns
import matplotlib.pyplot as plt
new = (('AXIN', 37, 'reported'),
('LGR', 30, 'UNREPORTED'),
('NKD', 24, 'reported'),
('TNFRSF', 23, 'reported'),
('CCND', 19, 'reported'),
('APCDD', 18, 'reported'),
('TRD', 16, 'reported'),
('TOX', 15, 'UNREPORTED'),
('LEF', 15, 'reported'),
('MME', 13, 'reported'))
#sort them as most common gene comes first
new = sorted(new, key=lambda score: score[1], reverse=True)
#X, Y zip of the tuple new are for plt.bar
X, Y, rep = zip(*new)
plt.figure(figsize = (8, 6))
mytitle = "Most common genes coexpressed with {gene1}, {gene2}, {gene3}, {gene4}".format(
gene1="Axin2", gene2="Lef", gene3="Nkd1", gene4="Lgr5")
plt.title(mytitle)
plt.ylabel('Number of same gene encounters across studies')
bars = plt.bar(range(len(X)), Y, 0.6, tick_label = X, color="green")
plt.xticks(rotation=90)
for i, bar inenumerate(bars):
if rep[i] == 'UNREPORTED':
bar.set_color("red")
plt.show()
Solution 2:
You need to pass a list or tuple of colors instead of just 1 color to plt.bar
. You can do so by creating a color dictionary, then building the list of color.
new = sorted(new, key=lambda score: score[1], reverse=True)
# save the reporting type as R
X, Y, R = zip(*new)
# create color dictionary
color_dict = {'reported':'green', 'UNREPORTED':'red'}
plt.figure(figsize = (20, 10))
mytitle = "Most common genes coexpressed with {gene1}, {gene2}, {gene3}, {gene4}".format(
gene1="Axin2", gene2="Lef", gene3="Nkd1", gene4="Lgr5")
plt.title(mytitle, fontsize=40)
plt.ylabel('Number of same gene encounters across studies', fontsize=20)
# build the colors from the color dictionary
ax = plt.bar(range(len(X)), Y, 0.6, tick_label = X, color=[color_dict[r] for r in R])
Post a Comment for "Python: Plt Bar Plot - Different Colors"