- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想知道如何创建一个具有相同大小段的饼图,其中每个段的颜色代表该段的频率?
这也称为时钟字形。我的目标是将饼图分成 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/
有人可以帮我理解为什么我的饼图百分比计算不正确吗?看截图: 根据我的计算,如 RHS 上所示,支出百分比应为 24.73%。传递给 Highcharts 的值如下:- 花费:204827099.36-
我正在制作圆环饼图。 我设置数据的颜色并获取钻取(它是保存外部切片的数据和配置的对象)切片的颜色为同一组颜色。我想设置要在向下钻取对象中使用的不同颜色数组。请参阅附图(外层切片有两种颜色:橙色和透明)
我是一名优秀的程序员,十分优秀!