解决seaborn/matplotlib绘制x轴分组柱状图时的ValueError报错
报错原因
你代码报错的核心是sns.catplot的y参数传入了df.groupby(['type']).count()这个多列Series对象,seaborn内部做逻辑判断时无法直接对Series整体做布尔值判定,因此抛出该错误。
你要实现按type分组、不同room分类的计数柱状图,不需要提前手动做分组聚合,直接用seaborn的count类型catplot即可自动统计分组频数。
修改后可运行代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt d = {'type': ['House', 'Boat', 'Bus', 'Bus', 'Boat'], 'room': ['private', 'public', 'public', 'private', 'nothing']} df = pd.DataFrame(data=d) g = sns.catplot( data=df, kind="count", x='type', hue="room", palette="dark", alpha=.6, height=6 ) g.despine(left=True) g.set_axis_labels("", "Counts") g.legend.set_title("") plt.show()
核心修改说明
- 把原来的
kind="bar"改为kind="count",catplot的count类型会自动按x和hue的分组统计样本数量,y轴自动对应计数值 - 移除了错误的
y=df.groupby(['type']).count()参数,无需手动指定聚合后的y值
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

