Сюжетная проблема с использованием Matplotlib.pyplot - PullRequest
0 голосов
/ 09 апреля 2020

Мой фрейм данных:

import matplotlib.pyplot as plt
import pandas as pd

store_num = [2, 5, 7, 9, 11, 14, 16, 19, 23, 24]
store_location = ['Free Standing', 'Strip Mall', 'Strip Mall', 'Strip Mall', 'Strip Mall', 'Big Box', 'Strip Mall', 'Strip Mall', 'Big Box', 'Big Box']
sales = [870859, 365501, 581628, 522831, 336361, 352152, 543373, 628040, 414274, 302452]
df_copy_cat = pd.DataFrame({'store_num': store_num , 'store_location' : store_location ,'sales': sales})

Я хочу сделать EDA, используя подсюжеты, чтобы показать наибольший доход магазинов, меню самых продаваемых товаров ... et c. Я создаю следующий код, но результат показывает 2 графика .... Что я делаю не так?

plt.subplot(2,2,1)
df_copy_cat = df_copy[['store_num', 'sales', 'store_location']]
df_copy_cat = df_copy_cat.groupby(['store_num', 'store_location']).sales.sum()
df_copy_cat = df_copy_cat.reset_index().set_index('store_num')
df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar')
plt.show()

Plot result is here

Также привязан следующий код :

plt.subplot(2,2,1)
df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar')

plt.subplot(2,2,2)
df_copy_cat.groupby('store_location').sales.sum().sort_values(ascending = False).plot(kind='bar')

plt.subplot(2,2,3)
county_sales.sort_values(ascending = False).plot(kind='bar')

plt.subplot(2,2,4)
best_seller.plot(kind='bar')

Результат:

enter image description here

1 Ответ

0 голосов
/ 09 апреля 2020

Вы делаете только один сюжет, используя метод pandas 'df.plot(). Таким образом, вам не нужна строка plt.subplot(2,2,1).

Если, с другой стороны, вы хотите сделать четыре сюжета на одной фигуре, вы можете сделать это следующим образом:

fig, ax = plt.subplots(2, 2)

df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar', ax=ax[0, 0])
df_copy_cat.groupby('store_location').sales.sum().sort_values(ascending = False).plot(kind='bar', ax=ax[0, 1])
county_sales.sort_values(ascending = False).plot(kind='bar', ax=ax[1, 0])
best_seller.plot(kind='bar', ax=ax[1, 1])

Обратите внимание, что ax=... аргументы передаются в matplotlib через df.plot().

Очевидно, pandas опирается на объектно-ориентированный интерфейс matplotlib, поэтому он работает лучше, чем подход, основанный на pyplot.

...