首页 > 解决方案 > 如何在python中获取多个直方图的颜色图?

问题描述

我有 10 个网络实现了网络分解算法中某些子结构的出现次数。我正在考虑 10 个最重要的网络,因此每个列表中有 10 个条目,其中每个列表都是网络的实现。基本上我有一个列表列表:

full_l2 = [[1, 1, 1, 1, 1, 1, 1, 1, 3, 1], 
           [1, 1, 1, 1, 1, 2, 2, 2, 1, 1], 
           [1, 1, 1, 1, 1, 2, 1, 1, 1, 1], 
           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
           [1, 1, 1, 1, 1, 3, 1, 1, 2, 2], 
           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
           [1, 3, 1, 1, 1, 1, 1, 1, 1, 1], 
           [1, 1, 1, 1, 1, 1, 2, 1, 1, 1], 
           [1, 1, 1, 1, 1, 1, 1, 1, 2, 1]]

列表中的数字表示子结构的数量,每个列表的网络按重要性降序排列。所以我用:

occ = []
    for i in range(10):
        a = list(zip(*full_l2))[i]
        occ.append(a)

获得第 1 个、第 2 个等直到第 10 个重要网络。现在出现的情况如下:

occ =  [(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
        (1, 1, 1, 1, 1, 1, 1, 3, 1, 1), 
        (1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
        (1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
        (1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
        (1, 2, 2, 1, 3, 1, 1, 1, 1, 1), 
        (1, 2, 1, 1, 1, 1, 1, 1, 2, 1), 
        (1, 2, 1, 1, 1, 1, 1, 1, 1, 1), 
        (3, 1, 1, 1, 2, 1, 1, 1, 1, 2), 
        (1, 1, 1, 1, 2, 1, 1, 1, 1, 1)]

因此,我绘制了出现次数的直方图。我只展示了 10 个实现,以便列表更容易理解,但我想为 1000 个实现。我刚刚使用:

plt.hist(occ)
plt.yscale(log)

我得到这样的情节:

对于 1000 个网络实现

但我需要将它作为颜色图。我尝试使用:

cm = plt.cm.get_cmap('jet')

并喜欢这里的答案:使用取自颜色图的颜色绘制直方图

但它有一个问题:

ValueError: color kwarg must have one color per dataset

我需要它看起来像:

带颜色图]

有谁知道我是否遗漏了什么?

标签: pythonlistmatplotlibhistogramcolormap

解决方案


推荐阅读