user3001937
user3001937

Reputation: 2113

How can I generate more colors on pie chart matplotlib

I am having more then 40 items to show in my chart. I have only 10 colours that repeatedly are shown on the chart. How can I generate more colors.

plt.pie(f,labels=labels,autopct='%1.1f%%', startangle=90,shadow=True)

I should add "color=colors" where colors is generated infinitely ?

Upvotes: 14

Views: 47288

Answers (3)

CT Zhu
CT Zhu

Reputation: 54330

You need colors argument, beside that you can use some color maps from cm.

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
a=np.random.random(40)
cs=cm.Set1(np.arange(40)/40.)
f=plt.figure()
ax=f.add_subplot(111, aspect='equal')
p=plt.pie(a, colors=cs)
plt.show()

enter image description here

Beside using colormaps, also consider using .set_color_cycle() method. See this post: plotting different colors in matplotlib

Upvotes: 38

Gags08
Gags08

Reputation: 252

I hope this answer would be useful. Check this link , Matplotlib supported colors. You can randomly pick 40 colors from it and use in your pie chart.

mcolors.TABLEAU_COLORS
mcolors.BASE_COLORS
mcolors.CSS4_COLORS

Sample

import random
import matplotlib.colors as mcolors
colors = random.choices(list(mcolors.CSS4_COLORS.values()),k = number_of_colors)

Upvotes: 5

DecaX
DecaX

Reputation: 31

If your pie chart is coming out with grouped chunks of the same colour when utilising the solution above, try changing the colour map from 'Set1' to any map you like from the following link: https://matplotlib.org/examples/color/colormaps_reference.html

As for randomising the colours, I suggest that you randomise the cs array in the solution above. But that doesn't really give a nice spectrum of colours.

Upvotes: 2

Related Questions