Панды строят несколько df с разными переменными на одном и том же графике - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть 4 DataFrames с различным местоположением: Индонезия, Сингапур, Малайзия и Total, каждый из которых содержит процентную долю от 5 самых прибыльных продуктов. Я составил их отдельно.

Я хочу объединить их вместе на одном графике, где ось X показывает разные местоположения и продукты, приносящие максимальный доход для каждого местоположения.

У меня напечатаны фреймы данныхи, как вы можете видеть, они содержат разные продукты.

print (Ind_top_cat, Sin_top_cat, Mal_top_cat, Tot_top_cat)

Category     Amt   
M020P     0.144131
MH        0.099439
ML        0.055052
PB        0.050057
PPDR      0.048315                

Category     Amt   
ML        0.480781
M015      0.073034
PPDR      0.035412
M025      0.033418
M020      0.031836                

Category     Amt   
TN        0.343650
PPDR      0.190773
NMCN      0.118425
M015      0.047539
NN        0.038140                

Category     Amt      
M020P     0.158575
MH        0.092012
ML        0.064179
PPDR      0.050803
PB        0.044301

Благодаря joelostblom я смогпостроить сюжет, однако, есть еще некоторые проблемы. введите описание изображения здесь

all_countries = pd.concat([Ind_top_cat, Sin_top_cat, Mal_top_cat, Tot_top_cat])
all_countries['Category'] = all_countries.index
sns.barplot(x='Country', y='Amt',hue = 'Category',data=all_countries)

Можно ли каким-либо образом поместить значения легенды на ось x (нет необходимости выделять категории цветом, а вместо этого - цвета страны), и поместитьзначения данных в верхней части столбцов. Кроме того, столбцы не отцентрированы и не знают, как их решить.

1 Ответ

0 голосов
/ 02 ноября 2019

Вы можете создать новый столбец в каждом фрейме данных с названием страны, например,

Ind_top_cat['Country'] = 'Indonesia'
Sin_top_cat['Country'] = 'Singapore'

. Вы можете создать один большой фрейм данных, объединяя вместе фреймы данных страны:

all_countries = pd.concat([Ind_top_cat, Sin_top_cat])

И, наконец, вы можете использовать высокоуровневую библиотеку для построения графиков, например, seaborn, чтобы назначить один столбец для расположения по оси X и один для цвета столбцов:

import seaborn as sns

sns.barplot(x='Country', y='Amt', color='Category', data=all_countries)

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

add plot fig

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