Как я могу заказать цветную коробку по разнице в средствах? - PullRequest
0 голосов
/ 20 апреля 2020

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

#custom palette
my_pal = {"Year A": "#e42628", "Year B": "#377db6"}

plt.figure(figsize=(16, 10))
ax = sns.boxplot(x='variable', y="value", hue="Condition", showmeans=True, data=df, palette=my_pal, meanprops={"marker":"s","markerfacecolor":"white", "markeredgecolor":"black"})
plt.ylabel("Temperature (\xb0C)")
plt.xlabel("Room")

Я рассчитал среднюю, а затем разницу, используя:

# calculate means based on condition    
meansofgroups = df.groupby('Condition').mean()
# calculate difference in means and then order
diff = meansofgroups.diff() 
# convert all values to positive
diff.abs()
# order values in descending order
diff.T.sort_values('Year B', ascending=False).T

Что дает

          E         D           G           I       B           etc.
Condition                               
Year A    NaN       NaN         NaN         NaN     NaN         etc.
Year B    3.213795  2.473751    1.802886    0.9225  0.527404    etc.

Однако я не уверен, как использовать этот новый фрейм данных со столбцами, упорядоченными, чтобы повлиять на мой порядок в блокпостах? Спасибо!

1 Ответ

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

Трещины это! Тем не менее, более ценные методы pythoni c приветствуются!

# calculate means based on condition    
meansofgroups = df.groupby('Condition').mean()
# calculate difference in means and then order
diff = meansofgroups.diff() 
# convert all values to positive
diff2 = diff.abs()
# order values in descending order
diffordered = diff2.T.sort_values('Year B', ascending=False).T    
# Reset the index to retain the condition column
diffordered2 = diffordered.reset_index()
# Sort old dataframe using new order
df_new = df[diffordered2.columns]
# Dataframe for plotting
df_new_melt = df_new.melt(id_vars=['Condition'])

Затем можно использовать 'df_new_melt' на блокпосте для создания:

enter image description here

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