使用sns.histplot绘制直方图失败,如何实现x轴为年份y轴为对应点数?
问题诊断
你误用了绘图函数:sns.histplot是用于展示数据分布频率的直方图工具,核心作用是统计一组数据在不同区间的出现次数,无法直接实现「分类x轴对应指定y轴数值高度」的需求。你需要的是展示类别与对应数值关联的柱状图,应该使用sns.barplot实现。
修改后可运行代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt data = {'year': ['2010', '2011','2012','2013','2014','2015','2016','2017','2018','2019','2020','2021'], 'points': [2260, 1499, 1834,3712,6830,7139.0,8085,6928,6903,8631,5476,1271]} df = pd.DataFrame(data) sns.set(style="darkgrid") # 替换为barplot,指定x、y对应的列 sns.barplot(data=df, x='year', y='points', color="blue") # 可选:旋转x轴标签避免文字重叠 plt.xticks(rotation=45) plt.show()
关键修改说明
- 绘图函数替换:将直方图函数
histplot替换为柱状图函数barplot,匹配你的需求场景 - 传参优化:直接传入完整DataFrame作为
data参数,分别指定x、y对应的列名即可,无需单独提取列 - 新增可选的x轴标签旋转配置,解决年份较多时标签重叠的问题
内容的提问来源于stack exchange,提问作者Zoe Win
相关产品推荐
相关产品推荐

