【发布时间】:2019-07-16 04:27:38
【问题描述】:
我有一个 pandas 数据框,正在尝试使用 seaborn 制作一个多条形图。我想将RF_# 标签的每组试验组合在一起;例如,我希望 RF_1 与 RF_6 分开,并希望每个 RF_# 值的五个试验彼此相邻但与其他 RF_# 组分开。
我已经读过要制作这种条形图,需要先使用 melt 函数,但我不确定这对我的特定数据框如何工作。
【问题讨论】:
我有一个 pandas 数据框,正在尝试使用 seaborn 制作一个多条形图。我想将RF_# 标签的每组试验组合在一起;例如,我希望 RF_1 与 RF_6 分开,并希望每个 RF_# 值的五个试验彼此相邻但与其他 RF_# 组分开。
我已经读过要制作这种条形图,需要先使用 melt 函数,但我不确定这对我的特定数据框如何工作。
【问题讨论】:
您可以melt 数据框,然后使用seaborn 的x 和hue 参数来创建您正在寻找的分组。下面的示例可能会受益于一些列重命名和视觉调整,但这应该会让您朝着正确的方向前进。
请注意,您可以直接在seaborn.barplot 命令中执行melt,但您可能希望将此熔化的数据框重新分配给一个新变量以用于其他绘图命令。
df = pd.DataFrame({'RF_1': {'Trial_1': 64.66,
'Trial_2': 48.37,
'Trial_3': 84.0,
'Trial_4': 11.16,
'Trial_5': 77.05},
'RF_6': {'Trial_1': 37.19,
'Trial_2': 17.14,
'Trial_3': 1.5,
'Trial_4': 66.14,
'Trial_5': 24.19},
'RF_7': {'Trial_1': 6.81,
'Trial_2': 31.22,
'Trial_3': 80.24,
'Trial_4': 4.04,
'Trial_5': 58.26},
'RF_8': {'Trial_1': 20.97,
'Trial_2': 44.52,
'Trial_3': 11.38,
'Trial_4': 75.17,
'Trial_5': 92.25},
'RF_9': {'Trial_1': 95.29,
'Trial_2': 19.66,
'Trial_3': 98.07,
'Trial_4': 54.02,
'Trial_5': 86.31}})
sns.barplot(x='RF', y='value', hue='index',
data=df.reset_index().melt(id_vars='index', var_name='RF'))
【讨论】: