Python: Pandas Dataframe Создание отдельных горизонтальных гистограмм для каждой отдельной категории в Dataframe - PullRequest
0 голосов
/ 08 мая 2018

У меня есть следующий фрейм данных:

Mon Year    Ratio Value Category
Jan 2016    0.024454035 A
    2017    0.048216976 A
    2018    0.064599633 A
Feb 2016    0.039955399 A
    2017    0.038249422 A
    2018    0.040955116 A
Mar 2016    0.047335373 A
    2017    0.095655431 A
    2018    0.018486543 A
Jan 2016    0.014454035 B
    2017    0.018216976 B
    2018    0.064599633 B
Feb 2016    0.039955399 B
    2017    0.083824942 B
    2018    0.080955116 B
Mar 2016    0.047335373 B
    2017    0.035655431 B
    2018    0.078486543 B
Jan 2016    0.024454035 C
    2017    0.018216976 C
    2018    0.024599633 C
Feb 2016    0.039955399 C
    2017    0.023824942 C
    2018    0.080955116 C
Mar 2016    0.037335373 C
    2017    0.035655431 C
    2018    0.008486543 C

Я хочу создать гистограмму в Python (по одной диаграмме на отдельную категорию). Таким образом, у меня было бы три отдельных графика A, B, C.

Я хочу, чтобы на оси Y отображался столбец «Пн» и три года, связанные с месяцем. Я хочу, чтобы горизонтальная ось (ось X) показывала значение отношения.

Ниже приведен гипотетический пример одного из графиков, которые я хочу составить (цифры не соответствуют предоставленному моему примеру):

enter image description here

Поскольку у меня есть три категории в моем фрейме данных, у меня будет три из этих диаграмм.

Я искал Google, но не смог найти ничего, что могло бы мне помочь.

1 Ответ

0 голосов
/ 08 мая 2018
import matplotlib.pyplot as plt

category = df['Category'].unique().tolist()
colour = ['blue', 'blue', 'blue', 'red', 'red', 'red', 'green', 'green', 'green']

fig, ax = plt.subplots(3, 1)
for i, cat in enumerate(category,1):
    plt.subplot(3, 1, i)
    df.loc[df['Category'] == cat, 'Ratio'].plot(kind='barh', color=colour)
    plt.title('Category ' + cat)
plt.xlabel('Ratio')
plt.subplot_tool() # should allow you to adjust the subplot spacing
plt.show()

enter image description here

...