如何在matplotlib的饼图上生成更多颜色?

14

我有超过40个项目要在图表中展示。 我只有10种颜色可以在图表上重复显示。如何生成更多的颜色。

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

我应该在"颜色=无限生成的颜色"处添加"颜色=颜色"吗?

3个回答

38

除此之外,您需要使用颜色参数,还可以使用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()

在此输入图片描述

除了使用调色板,还可以考虑使用.set_color_cycle()方法。参见这篇帖子:Matplotlib中绘制不同颜色


5
当我照着你的代码运行时,我得到了很多重复的颜色。这是输出的饼图。你知道怎样创建一个没有重复颜色的饼图,同时不将那些颜色分在一起吗?(因为我不想让饼图看起来像彩虹;我希望颜色的顺序是随机的。)谢谢。 - Crickets

5

我希望这个回答能够对你有所帮助。查看Matplotlib支持的颜色链接。您可以从中随机选择40种颜色,并在饼图中使用。

mcolors.TABLEAU_COLORS
mcolors.BASE_COLORS
mcolors.CSS4_COLORS

示例

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

2
如果使用上面的解决方案,你的饼图呈现出相同颜色的分组块,请尝试将颜色映射从'Set1'更改为以下链接中喜欢的任何映射:https://matplotlib.org/examples/color/colormaps_reference.html 至于随机化颜色,我建议在上述解决方案中随机化cs数组。但那并不能给出一个漂亮的颜色谱。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接