每个用餐时间我都有一个简单的营养价值数据框:
import pandas as pd
import seaborn as sns
df = pd.DataFrame(
[
[ 0.0367354, 0.0484153 , 0.0894831 , -0.131245 , -0.0961374, -0.049433 , 0.142161 , 0.0884946, 'breakfast'],
[-0.0603371, -0.00281495, -0.00470734, 0.100897 , 0.0700709, 0.0259078 , -0.147854 , -0.0594319, 'lunch' ],
[-0.0141466, 0.042048 , 0.0411203 , 0.0871926, 0.057405 , -0.00814915, -0.00340751 , -0.207868 , 'dinner' ],
],
columns=['calories', 'carbs' , 'fat' , 'fiber' , 'protein' , 'salt' , 'saturated-fat', 'sugar' , 'mealtime' ]
)
将如何创建以每个餐组为特征的营养价值条形/分布的条形图,就像下面的条形图(其中性别对应于餐组)一样?
我在想像一个与以下(错误)命令类似的命令:
sns.barplot(df.columns.drop('mealtime'), df.drop('mealtime', axis=1).values, hue=df['mealtime'], data=df);
答案 0 :(得分:1)
在您的情况下,您可以融合数据框,以便于使用:
temp = pd.melt(df, 'mealtime')
输出:
mealtime variable value
0 breakfast calories 0.036735
1 lunch calories -0.060337
2 dinner calories -0.014147
3 breakfast carbs 0.048415
4 lunch carbs -0.002815
然后情节:
sns.set()
plt.figure(figsize=(16,4))
sns.barplot('variable', 'value', hue='mealtime', data=temp)
答案 1 :(得分:1)