Построить результаты кросс-таблицы, используя Все строки в качестве контрольных линий - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть этот пример кадра данных:

test = pd.DataFrame({'cluster':['1','1','1','1','2','2','2','2','2','3','3','3'],
                 'type':['a','b','c','a','a','b','c','c','a','b','c','a']})

Я использую кросс-таблицу для создания нового кадра данных и результатов построения графика:

pd.crosstab(test.cluster,test.type,normalize='index',margins=True).plot(kind='bar')

enter image description here

Я хотел бы нарисовать строку All как пунктирные горизонтальные контрольные линии одного цвета , соответствующие каждому типу, для улучшения интерпретации графика.Буду признателен за помощь этого сообщества!

1 Ответ

0 голосов
/ 25 ноября 2018
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
test = pd.DataFrame(
    {'cluster': ['1', '1', '1', '1', '2', '2', '2', '2', '2', '3', '3', '3'],
     'type': ['a', 'b', 'c', 'a', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a']})
tab = pd.crosstab(test.cluster, test.type, normalize='index', margins=True)

fig, ax = plt.subplots()

# find the default colors
prop_cycle = plt.rcParams['axes.prop_cycle']
colors = prop_cycle.by_key()['color']

# make a bar plot using all rows but the last
tab.iloc[:-1].plot(ax=ax, kind='bar', color=colors)

# draw the horizontal dotted lines
for y, c in zip(tab.loc['All'], colors):
    ax.axhline(y=y, color=c, linestyle=':', alpha=0.5)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...