如何在python中绘制带有两个数组的堆积直方图

时间:2016-09-09 10:14:50

标签: python matplotlib histogram

我正在尝试创建一个堆积直方图,显示恶性和良性肿瘤的丛集厚度,恶性类为红色,良性类为蓝色。

我得到了clump_thickness_array和benign_or_malignant_array。 benign_or_malignant_array由2s和4s组成。

  1. 如果benign_or_malignant等于2则为良性(蓝色)。
  2. 如果等于4,则为恶性(红色)。
  3. 我无法弄清楚如何为良性和恶性肿瘤着色。我的直方图显示的不是我试图实现的东西。

    到目前为止,这是我的代码和直方图:

    fig, ax = plt.subplots(figsize=(12,8))
    tmp = list()
    for i in range(2):
    indices = np.where(benign_or_malignant>=i )
    tmp.append(clump_thickness[indices])
    
    ax.hist(tmp,bins=10,stacked=True,color = ['b',"r"],alpha=0.73)
    

    enter image description here

1 个答案:

答案 0 :(得分:1)

要使用每组不同长度的列表获取堆叠直方图,您需要汇编列表列表。这就是您使用tmp变量所做的事情。但是,我认为你在for循环中使用了错误的索引。在上文中,您声明要根据变量benign_or_malignant标记数据。你想测试它是2还是4。如果你真的只想要这两种可能性,那么重写如下:

for i in [2,4]:
   indices = np.where(benign_or_malignant==i )
   tmp.append(clump_thickness[indices])