Визуализация cumsum python

1

Это связано с различием после роллинга с использованием Pandas

Теперь, когда у меня есть этот dataframe ниже, я пытаюсь визуализировать это.

Item    Add Subtracts   Month   Net_Items   Monthly_Available_Items
C   68  30  1   38  38
C   58  34  2   24  62
C   64  47  3   17  79
C   263 81  4   182 261
C   95  104 5   -9  252
C   38  63  6   -25 227
C   115 95  7   20  247
C   97  112 8   -15 232

Код и график приведены ниже:

plt.figure(figsize=(20,10))
fig, ax1 = plt.subplots(figsize = (20,10))
ax1 = sns.pointplot(x='Month', y='value', hue='variable',data=stack_df)
ax1.legend(loc = 'upper left')
ax2 = sns.barplot(x = 'Month', y = 'Monthly_Available_Items', data = 
stack_df, color = 'purple')
ax1.set_ylabel("Count of Items")

Сравнение добавления и вычитания с доступным ежемесячным запасом: Изображение 174551

Вопросы:

  1. Как добавить легенду на ось ax2. Это означает ежемесячные доступные позиции за каждый месяц. Я старался

    ax2.legend(), но он не работает

  2. Как я могу создать похожие графики для каждого элемента (A, B, C, D, E)

Теги:
pandas
matplotlib
seaborn

1 ответ

0
Лучший ответ

Вы можете добавить легенду, указав label

ax2 = sns.barplot(x = 'Month', y = 'Monthly_Available_Items', 
                             data = stack_df, color = 'purple', 
                             label = "Monthly_Available_Items")
ax2.legend() # will show the legend for the barplot

Если вы хотите построить несколько графиков на основе столбца Item, вы можете использовать groupby для построения графика.

Предполагая, что это наш dataframe df:

  Item  Add  Subtracts  Month   Net_Items   Monthly_Available_Items
0   C   68     30        1        38             38
1   D   58     34        2        24             62
2   C   64     47        3        17             79
3   C   263    81        4       182            261
4   D   95    104        5        -9            252
5   D   38     63        6       -25            227
6   D   115    95        7        20            247
7   C   97    112        8       -15            232

Самый простой способ построить несколько графиков для каждого уникального значения из столбца Item будет использовать метод pandas plot. Сначала мы будем использовать melt а затем groupby.

melt = df.melt(id_vars=('Item', 'Month', 'Monthly_Available_Items'), 
               value_vars=['Add','Subtracts'])

# sort the melted df by item column
melt.sort_values("Item", inplace=True)

# using groupby to plot by item column.
ax = df.groupby("Item").plot(x='Month', y = "Monthly_Available_Items",
                        kind='bar', color='purple')

# list of axes generated by ax
axes = [i for i in ax] 

# list of unique items from item column eg.,C,D
items = melt.Item.unique()

for i in range(len(c)):
    sns.pointplot(x='Month', y='value', hue='variable', 
                       data=melt[melt.Item == c[i]], ax=axes[i])

# customize
axes[0].set_title("Plot for Item C")
axes[1].set_title("Plot for Item D")
plt.show()

Изображение 174551 Изображение 174551

  • 0
    Это сработало отлично! Еще один вопрос, как я могу сделать их больше?
  • 0
    @ user10297084 Добро пожаловать. Просто используйте параметр figsize ax = df.groupby("Item").plot(x='Month', y = "Monthly_Available_Items", kind='bar', color='purple', figsize = (width, height))
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню