我如何获得不同的饼图颜色

时间:2018-09-02 05:54:15

标签: python matplotlib

如何获得其他饼图颜色?我有大约20个类别的数据集,并且可能更大。创建饼图时,某些楔形具有相同的颜色,所以我想知道是否可以通过一种方法使饼形图中的楔形具有所有不同的颜色? 谢谢!

1 个答案:

答案 0 :(得分:2)

20种颜色恰恰是您可以通过matplotlib中的分类/定性色图实现的限制。目前,matplotlib提供了1.kind_of? Integer #true (1.5).kind_of? Float #true tab20tab20b颜色图。

tab20c

enter image description here

对于更多颜色,当然也可以使用different colormaps,但是这些颜色通常会导致彼此非常相似的颜色。例如。对于具有30种不同颜色的饼图,我们可以使用import matplotlib.pyplot as plt import numpy as np data = np.random.randint(50,200, size=20) fig = plt.figure() with plt.style.context({"axes.prop_cycle" : plt.cycler("color", plt.cm.tab20.colors)}): ax = fig.add_subplot(121, aspect="equal") ax.pie(data) with plt.style.context({"axes.prop_cycle" : plt.cycler("color", plt.cm.tab20c.colors)}): ax2 = fig.add_subplot(122, aspect="equal") ax2.pie(data) plt.show() nipy_spectral颜色图。

CMRmap

enter image description here

因此,可以添加另一个维度。从任何颜色图中选择一些颜色,并为每种颜色创建不同的亮度级别。这实际上显示在this answer中。在这里,为了得到例如30种不同的颜色,我们可以选择6种颜色,并为每种5种亮度级别选择。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randint(50,200, size=30)

fig = plt.figure()

cc = plt.cycler("color", plt.cm.nipy_spectral(np.linspace(0,.9,len(data))))
with plt.style.context({"axes.prop_cycle" : cc}):
    ax = fig.add_subplot(121, aspect="equal")
    ax.pie(data)

cc = plt.cycler("color", plt.cm.CMRmap(np.linspace(0,0.9,len(data))))
with plt.style.context({"axes.prop_cycle" : cc}):
    ax2 = fig.add_subplot(122, aspect="equal")
    ax2.pie(data)

plt.show()

enter image description here