Как сделать гистограмму с несколькими столбцами, используя фрейм данных из словаря в Python - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь сделать многостолбчатую гистограмму из словаря, который я создал, но не уверен, как правильно его отобразить.

Я пытался использовать библиотеку панд без особого успеха.

                            if x==0:
                                IR10_cnt=IR10_cnt+1
                                f_cond_r10.append(a)
                                f_pow_r10.append(b)
                                f_mom_r10.append(c)
                                f_ct[x]=[Counter(f_cond_r10), Counter(f_pow_r10), Counter(f_mom_r10)]
                                f_ct[x]=[dict(Counter(f_cond_r10)),dict(Counter(f_pow_r10)), dict(Counter(f_mom_r10))]
                            elif x==1:
                                IR11_cnt=IR11_cnt+1
                                f_cond_r11.append(a)
                                f_pow_r11.append(b)
                                f_mom_r11.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r11)),dict(Counter(f_pow_r11)), dict(Counter(f_mom_r11))]
                            elif x==2:
                                IR12_cnt=IR12_cnt+1
                                f_cond_r12.append(a)
                                f_pow_r12.append(b)
                                f_mom_r12.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r12)),dict(Counter(f_pow_r12)), dict(Counter(f_mom_r12))]
                            elif x==3:
                                IR13_cnt=IR13_cnt+1
                                f_cond_r13.append(a)
                                f_pow_r13.append(b)
                                f_mom_r13.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r13)),dict(Counter(f_pow_r13)), dict(Counter(f_mom_r13))]
                            elif x==4:
                                IR14_cnt=IR14_cnt+1
                                f_cond_r14.append(a)
                                f_pow_r14.append(b)
                                f_mom_r14.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r14)),dict(Counter(f_pow_r14)), dict(Counter(f_mom_r14))]
                            elif x==5:
                                IR15_cnt=IR15_cnt+1
                                f_cond_r15.append(a)
                                f_pow_r15.append(b)
                                f_mom_r15.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r15)),dict(Counter(f_pow_r15)), dict(Counter(f_mom_r15))]
                            elif x==6:
                                IR16_cnt=IR16_cnt+1
                                f_cond_r16.append(a)
                                f_pow_r16.append(b)
                                f_mom_r16.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r16)),dict(Counter(f_pow_r16)), dict(Counter(f_mom_r16))]
                            elif x==7:
                                IR17_cnt=IR17_cnt+1
                                f_cond_r17.append(a)
                                f_pow_r17.append(b)
                                f_mom_r17.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r17)),dict(Counter(f_pow_r17)), dict(Counter(f_mom_r17))]
                            elif x==8:
                                IR18_cnt=IR18_cnt+1
                                f_cond_r18.append(a)
                                f_pow_r18.append(b)
                                f_mom_r18.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r18)),dict(Counter(f_pow_r18)), dict(Counter(f_mom_r18))]
                            elif x==9:
                                IR19_cnt=IR19_cnt+1
                                f_cond_r19.append(a)
                                f_pow_r19.append(b)
                                f_mom_r19.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r19)),dict(Counter(f_pow_r19)), dict(Counter(f_mom_r19))]
                            elif x==10:
                                IR20_cnt=IR20_cnt+1
                                f_cond_r20.append(a)
                                f_pow_r20.append(b)
                                f_mom_r20.append(c)
                                f_ct[x]=[dict(Counter(f_cond_r20)),dict(Counter(f_pow_r20)), dict(Counter(f_mom_r20))]
                            elif x==11:
                                f_cond_r21.append(a)
                                f_pow_r21.append(b)
                                f_mom_r21.append(c)
                                IR21_cnt=IR21_cnt+1
                                f_ct[x]=[dict(Counter(f_cond_r21)),dict(Counter(f_pow_r21)), dict(Counter(f_mom_r21))]
                            elif x==12:
                                f_cond_r22.append(a)
                                f_pow_r22.append(b)
                                f_mom_r22.append(c)
                                IR22_cnt=IR22_cnt+1
                                f_ct[x]=[dict(Counter(f_cond_r22)),dict(Counter(f_pow_r22)), dict(Counter(f_mom_r22))]
                            elif x==13:
                                f_cond_r23.append(a)
                                f_pow_r23.append(b)
                                f_mom_r23.append(c)
                                IR23_cnt=IR23_cnt+1
                                f_ct[x]=[dict(Counter(f_cond_r23)),dict(Counter(f_pow_r23)), dict(Counter(f_mom_r23))]
                            elif x==14:
                                f_cond_r24.append(a)
                                f_pow_r24.append(b)
                                f_mom_r24.append(c)
                                IR24_cnt=IR24_cnt+1
                                f_ct[x]=[dict(Counter(f_cond_r24)),dict(Counter(f_pow_r24)), dict(Counter(f_mom_r24))]
                            elif x==15:
                                f_cond_r25.append(a)
                                f_pow_r25.append(b)
                                f_mom_r25.append(c)
                                IR25_cnt=IR25_cnt+1
                                f_ct[x]=[dict(Counter(f_cond_r25)),dict(Counter(f_pow_r25)), dict(Counter(f_mom_r25))]

    for x in range(0, 16):
        for y in range(0,3):
            if y==0:
                print("ring=", x+10, "cond", f_ct[x,y])

            elif y==1:
                print("ring=", x+10, "pow", f_ct[x,y])

            elif y==2:
                print("ring=", x+10, "mom", f_ct[x,y])
         print("") 


    df = pd.DataFrame.from_dict({'Ring 10 Cond': pd.Series(f_ct[0,0]), 'Ring 10 Pow': pd.Series(f_ct[0,1]), 'Ring 10 mom': pd.Series(f_ct[0,2])})
    ax = df.plot.bar()
    labs = [round(float(t.get_text()), 1) for t in ax.axes.get_xmajorticklabels()]
    ax.set_xticklabels(labs)
    plt.xlabel("Ring")
    plt.ylabel("Matches")
    plt.show()

Словарь f_ct содержит 15 строк и 3 столбца, а каждый индекс содержит счетчик «совпадений» в диапазоне 0,1–0,9.Я пытаюсь построить каждую строку как «кольцо» на оси х, а количество «совпадений» для каждого значения 0.-0.9 на оси у.Я хочу сделать 3 графика, по одному для каждого индекса y (cond, pow и mom) в словаре.F_ct печатает так:

ring = 10 cond {0,1: 1, 0,2: 1, 0,30000000000000004: 1, 0,4: 1, 0,5: 1, 0,6: 1, 0,7000000000000001: 1, 0,8: 1, 0,9: 1}

ring = 10 pow {0.9: 9}

ring = 10 mom {0.9: 9}

ring = 11 con {0.1: 4, 0.2:4, 0,30000000000000004: 4, 0,4: 4, 0,5: 4, 0,6: 4, 0,7000000000000001: 4, 0,8: 4, 0,9: 4}

кольцо = 11 Pow {0,8: 18, 0,9: 18}

кольцо = 11 мамы {0,8: 18, 0,9: 18}

и т. Д.

График показывает 0,1-0,9 на оси X вместо "кольцо "номер.Я хочу, чтобы каждое значение 0,1-0,9 имело собственный столбец на каждое «кольцо» с количеством «совпадений», указанным счетчиком.Таким образом, график cond «кольцо 10» будет иметь 1 «совпадение» для каждого значения 0,1–0,9, а «кольцо 11» будет иметь 4 «совпадения» для каждого значения 0,1–0,9.И на графике пау будет 9 «совпадений» на «кольце 10» для 0,9 и ни одного для 0,1–0,8, а для «кольца 11» будет 18 «совпадений» для 0,8 и 18 для 0,9 и ни одного для 0,1–0,7.ETC.

Спасибо!

...