Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas stacked bar chart duplicates colors for large legends

I need to create a stacked bar chart with a large number (10 or so) categories. The problem is that Pandas only provides colors for up to 7 different categories. It sets the remaining colors as blue. How to I ensure that every category has a unique color?

Example:

df = pd.DataFrame(np.abs(np.random.randn(10,10)),columns=['A','B','C','D','E','F','G','H','I','J'], index=range(10))
df.plot(kind='bar',stacked=True,figsize=(20,10))

Produces a bar chart where H,I, and J are not given unique colors.

like image 787
Caleb Avatar asked Jan 25 '14 20:01

Caleb


1 Answers

In [22]: colors = plt.cm.GnBu(np.linspace(0, 1, 10))

In [23]: df.plot(kind='bar', stacked=True, figsize=(20, 10), color=colors)
Out[23]: <matplotlib.axes._subplots.AxesSubplot at 0x10b792d90>

enter image description here

matplotlib has a bunch of different colormaps to choose from. Just don't use jet.

like image 124
TomAugspurger Avatar answered Oct 31 '22 15:10

TomAugspurger