问题
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 ?
回答1:
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()
Beside using colormaps, also consider using .set_color_cycle()
method. See this post: plotting different colors in matplotlib
回答2:
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)
回答3:
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.
来源:https://stackoverflow.com/questions/21034830/how-can-i-generate-more-colors-on-pie-chart-matplotlib