连接箱线图的 "caps"

connect "caps" of box plot

你好,我有一个 python 函数来连接 2 个箱线图的 "caps",但我不能只连接高级大写字母,这就是我需要的(只连接高级大写字母)用粉红色的线),我非常感谢你的帮助,

我的代码是下一个

def set_boxes_lim_max_line(bp, w, c):
    limit_sup_x = []
    limit_sup_y = []

    for p in bp['caps']:
        data = p.get_data()
        #x=bp['caps'][1].get_data()[0]
        x=np.max([data[0].mean(),data[0].mean()])
        #x=bp['boxes'][0].get_data()[0]
        y = data[1].max()
        limit_sup_x.append(x)
        limit_sup_y.append(y)

    plt.plot(limit_sup_x,limit_sup_y, color = c, linewidth = w)
    #plt.plot(limit_sup_x, color = c, linewidth = w)

调用它的函数:

 bp1 = plt.boxplot([sample1[i] for i in posiciones2], positions = (range(1, 3)), widths = 0.6)
    set_box_color(bp1,'red')

    # Agregar lineas caja roja
    set_boxes_lim_max_line(bp1,1.2,'hotpink')#LINEA LIMITE SUPERIOR
    set_boxes_q_min_line(bp1, 1.2, 'tomato') #LINEA "Q3" SUPERIOR CAJA    
    set_boxes_median_line(bp1, 1.2, 'seagreen')#LINEA MEDIANA
    set_boxes_q_max_line(bp1, 1.2, 'darkred')#LINEA "Q1" INFERIOR CAJA
    #set_boxes_q_min_line(bp1, 1.2, 'tomato') #LINEA LIMITE INFERIOR

这样做就可以了:

def set_boxes_lim_max_line(bp, w, c):
    limit_sup_x = []
    limit_sup_y = []

    for p in bp['caps'][1::2]:
        data = p.get_data()
        #x=bp['caps'][1].get_data()[0]
        x=np.max([data[0].mean(),data[0].mean()])
        #x=bp['boxes'][0].get_data()[0]
        y = data[1].max()
        limit_sup_x.append(x)
        limit_sup_y.append(y)

    plt.plot(limit_sup_x,limit_sup_y, color = c, linewidth = w)

示例: