Это связано с различием после роллинга с использованием 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")
Сравнение добавления и вычитания с доступным ежемесячным запасом:
Вопросы:
Как добавить легенду на ось ax2. Это означает ежемесячные доступные позиции за каждый месяц. Я старался
ax2.legend(), но он не работает
Как я могу создать похожие графики для каждого элемента (A, B, C, D, E)
Вы можете добавить легенду, указав 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()
figsize
ax = df.groupby("Item").plot(x='Month', y = "Monthly_Available_Items", kind='bar', color='purple', figsize = (width, height))