【问题标题】:Color bin in hist2d belonging to specific data sethist2d 中属于特定数据集的颜色箱
【发布时间】:2020-12-31 16:43:27
【问题描述】:

我在hist2d 的帮助下绘制了许多不同的数据集(x,y)(具有不同的计数/bin)。所有 2D 直方图都具有相同的分箱。我正在寻找一种将它们全部绘制在一个 hist2d 中的方法。

这样做的方法是:

  • 为每个数据集分配一种颜色(例如:dataset1 = 红色,dataset2 = 蓝色,dataset3 = 绿色,...)
  • 比较每个数据集中的[i,j] 元素并从中获得最大值:
for i in range(len(ybins)-1):
    for j in range(len(xbins)-1):
        hist.T[i,j] = max([h1.T[i,j],h2.T[i,j],...,hn.T[i,j]])
  • 如果最大值属于一个数据集,则将该 bin 与该数据集对应的颜色着色

我能够生成单独的hist2d (see here)。正如你所看到的,每一个的位置都不同。 我最后想要的是:

在这种情况下,我无法找到如何分别为每个 bin 着色,或者如何将单一颜色分配给 hist2dimshow。我找到了如何用离散值定义我自己的颜色条,但是如何只将颜色条中的特定颜色传递给hist2dimshow 的参数?

【问题讨论】:

    标签: python python-3.x histogram


    【解决方案1】:

    如果您的直方图数组是a1a2a3,例如:

    from numpy import array, stack
    
    h1 = array([[0, 10], 
                [0, 10]])
    h2 = array([[20, 0], 
                [20, 0]])
    h3 = array([[0, 0], 
                [30, 30]])
    

    首先将它们堆叠在一起:

    hist = stack([h1, h2, h3])
    

    然后使用argmax获取栈中每一项的最大值的数组的索引:

    hist_index = hist.argmax(axis=0)
    

    这为您提供了以下数组:

    array([[1, 0],
           [2, 2]])
    

    【讨论】:

    • 谢谢!不知道np.stack 功能:)
    • 没问题 Pandas 之前有 numpy!
    猜你喜欢
    • 2021-12-01
    • 2020-09-18
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2021-08-15
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多