如何用Seaborn以Pandas DataFrame的A列为hue绘制B、C列箱线图
解决方法
问题出在你melt的时候丢了A列的分组信息,直接对原DataFrame做melt并保留A列作为分组依据就行:
import pandas as pd import seaborn as sb df = pd.DataFrame({'A':['a','a','b','a','b'],'B':[1,3,5,4,7],'C':[2,3,4,1,3]}) # 融化时保留A列作为id变量,让每个数值都对应原有的分组A melted_df = pd.melt(df, id_vars='A', value_vars=['B', 'C']) # 绘制箱线图,指定hue为A列实现分组 sb.boxplot(data=melted_df, x="variable", y="value", hue="A", palette='Blues')
关键说明
pd.melt的id_vars参数用来指定不需要被融化的列,这里就是分组用的A列,这样融化后的每一行都会带上对应的分组标记- 融化后的
variable列对应原来的B、C列名,value列对应B、C的数值,配合hue="A"就能实现按A分组展示B、C两列的箱线图
内容的提问来源于stack exchange,提问作者SERGIO
相关产品推荐
相关产品推荐

