如何使用DataFrame两列数据绘制符合Excel效果的Seaborn直方图
问题核心原因
- 你混淆了直方图和柱状图的适用场景:
histplot是用来统计单个变量的频次分布的工具,同时传入x和y参数时会生成双变量联合分布的热力直方图,和你预期的单维度柱子效果完全不符。 - 你要的Excel效果本质是分类柱状图,核心是展示每个
gr_age分类对应的weighted_cost数值大小。
可行实现方案
方案1:使用seaborn.barplot(更推荐,匹配需求场景)
直接通过x、y参数映射分类和对应数值,默认生成的效果和Excel直方图一致,添加ci=None可关闭默认的置信区间误差线:
import seaborn as sns import matplotlib.pyplot as plt sns.barplot(data=df, x="gr_age", y="weighted_cost", color="steelblue", ci=None) # 可根据需要自定义坐标轴标签 plt.xlabel("gr_age") plt.ylabel("weighted_cost") plt.show()
方案2:使用histplot配合weights参数实现
如果一定要用histplot实现对应效果,将weighted_cost作为权重参数传入,搭配discrete=True即可:
sns.histplot(data=df, x="gr_age", weights="weighted_cost", discrete=True, color="steelblue") plt.xlabel("gr_age") plt.ylabel("weighted_cost") plt.show()
内容的提问来源于stack exchange,提问作者Riflender
相关产品推荐
相关产品推荐

