Как расположить 3 столбчатых диаграммы с помощью панд - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать графику с тремя гистограммами, например:

enter image description here

У меня на самом деле два вопроса:

1) Я пытаюсь использовать параметр 'position' в DataFrame Pandas, но столбцы все еще перекрываются.Есть ли другая альтернатива, кроме уменьшения ширины столбцов?

2) Три бара имеют три общие категории (B, C, D, E), как я могу иметь легенду, которая содержит только фактическиешесть разных категорий?

Мой DataFrame:

          A         B         C         D         E         F
0  0.108858  0.265929  0.537369  2.183963  1.353575  2.938775
1  0.375641  0.198720  0.266806  0.409179  0.286645  0.636405
2  1.179256  0.808986  0.171202  0.946194  0.506783  2.121366
3  1.510399  1.218619  0.307752  0.819865  1.283067  0.213556

И мой тестовый код:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


df = pd.DataFrame(abs(np.random.randn(4, 6)), columns=list('ABCDEF'))

print(df)

colors1 = ['#a50f15', '#9ecae1', '#6baed6', '#3182bd']
colors2 = ['#fb6a4a', '#9ecae1', '#6baed6', '#3182bd']
colors3 = ['#fcbba1', '#9ecae1', '#6baed6', '#3182bd']

fig, ax = plt.subplots(figsize=(8,6))

df.plot(ax=ax, y=['A', 'B', 'C', 'D'], kind='bar', stacked=True, width=0.15, color=colors1, position=0)
df.plot(ax=ax, y=['E', 'B', 'C', 'D'], kind='bar', stacked=True, width=0.15, color=colors2, position=0.5)
df.plot(ax=ax, y=['F', 'B', 'C', 'D'], kind='bar', stacked=True, width=0.15, color=colors3, position=1)

ax.legend(ncol=3)

plt.tight_layout()

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