gpt4 book ai didi

Python matplotlib - 如何创建一个用颜色代表频率的饼图?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:16 25 4
gpt4 key购买 nike

我想知道如何创建一个具有相同大小段的饼图,其中每个段的颜色代表该段的频率?

这也称为时钟字形。我的目标是将饼图分成 24 个部分,并绘制一些小时的频率数据,其中频率将根据颜色图确定小时部分的颜色。

数据将是这样的(5 小时):

data = [3,34,76,11,90]

我的色图 (mycm) 是:

mycm = LinearSegmentedColormap.from_list('mycm',['k','r'])]

为了创建相等的段,我想我使用了类似的东西:

plt.pie([1,1,1,1,1], labels=None, shadow=False, radius=0.5)

但是我怎样才能使用我根据数据中的频率值定义的颜色图为这些颜色着色?

提前致谢!

最佳答案

您需要的代码如下,改编自 Coloring slices of pie chart in matplotlib python .基本上,每个切片的 fracs 都具有相同的值(这样所有切片的大小都相同),但是颜色通过 colors 参数改变。您可以根据频率或您可能需要的任何其他内容映射颜色。

fracs = ones(len(data))*1/len(data)
my_norm = matplotlib.colors.Normalize(min(data),max(data)) #this is how we will map our data

c1 = matplotlib.colors.LinearSegmentedColormap.from_list('mycm',['k','r'])

plt.pie(fracs, labels=None, shadow=False, radius=0.5, colors=c1(my_norm(data)))

根据您的数据分布,您可能仍然会得到一个看起来只有几种颜色的饼图,因为我们使用线性映射将数据点映射到颜色。如果你想要一个非线性映射,你可以改变你映射数据的方式(my_norm 函数)。例如,您可以围绕色轮构造一个等距离的颜色阵列,以获得 N 种颜色之间的最大差异,并循环显示颜色而不是映射颜色。

关于Python matplotlib - 如何创建一个用颜色代表频率的饼图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com