Я пытаюсь построить следующие данные в виде горизонтальной гистограммы с накоплением. Я хотел бы показать Неделю 1 и Неделю 2 как столбцы с максимальным размером столбца («Всего») вверху, а затем вниз. Фактические данные - 100 строк, поэтому я пришел к использованию графиков Seaborn с kind = 'bar'. Я не уверен, можно ли складывать (например, Matplotlib), поэтому я решил создать две диаграммы и наложить «Неделя 1» поверх «Всего» для того же эффекта сложения.
Однако, когда я запускаю приведенное ниже, я получаю два отдельных графика, а заголовок и ось диаграммы - это один график. Могу ли я объединить это в одну горизонтальную диаграмму с накоплением. Если более простой способ, ценю, чтобы узнать.
Company | Week 1 | Week 2 | Total |
---|---|---|---|
Stanley Atherton | 0 | 1 | 1 |
Dennis Auton | 1 | 1 | 2 |
David Bailey | 3 | 8 | 11 |
Alan Ball | 5 | 2 | 7 |
Philip Barker | 3 | 0 | 3 |
Mark Beirne | 0 | 1 | 1 |
Phyllis Blitz | 3 | 0 | 3 |
Simon Blower | 4 | 2 | 6 |
Steven Branton | 5 | 7 | 12 |
Rebecca Brown | 0 | 4 | 4 |
(Имена созданы из генератора случайных имен)
Код:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('Sample1.csv', delimiter="\t", error_bad_lines=False)
data_rank = data.sort_values(["Attending", "Company"], ascending=[False,True])
sns.set(style="ticks")
g = sns.catplot(y='Company', x='Total', data=data_rank, kind='bar', height=4, color='red', aspect=0.8, ax=ax)
ax2 =ax.twinx()
g = sns.catplot(y='Company', x='Week 1', data=data_rank, kind='bar', height=4, color='blue', aspect=0.8, ax=ax2)
for ax in g.axes[0]:
ax.xaxis.tick_top()
ax.xaxis.set_label_position('top')
ax.spines['bottom'].set_visible(True)
ax.spines['top'].set_visible(True)
plt.title("Company by week ", size=7)