如何用Pandas或Seaborn在柱状图上添加回归趋势线?
在Seaborn柱状图上添加回归趋势线的方法
嘿,刚入门Pandas和Seaborn的话,遇到这个问题太正常啦!其实核心是要把分类的年份轴和回归线需要的连续数值轴对应起来,我给你一步步讲清楚怎么实现:
第一步:确保数据格式正确
首先你得有一个对应年份的列(比如叫Year),如果你的12年数据是用行索引表示的,先把它转成单独的列:
# 假设索引是从0到11,对应2010-2021年 sampleSizes['Year'] = sampleSizes.index + 2010 # 如果年份是字符串格式,转成整数方便回归计算 sampleSizes['Year'] = sampleSizes['Year'].astype(int)
第二步:同时绘制柱状图和回归线
Seaborn的barplot用来画柱状图,regplot可以在同一个轴上叠加回归趋势线,代码示例如下:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 设置画布大小 plt.figure(figsize=(10, 6)) # 绘制柱状图 sns.barplot( data=sampleSizes, x='Year', y='Sample Size', color='lightblue', label='Annual Sample Size' ) # 叠加回归趋势线(scatter=False表示不画散点,只画线条) sns.regplot( data=sampleSizes, x='Year', y='Sample Size', scatter=False, color='darkred', line_kws={'lw': 2}, # 设置线条粗细 label='Trend Line' ) # 美化图表 plt.title('Sample Size Trend Over 12 Years', fontsize=14) plt.xlabel('Year', fontsize=12) plt.ylabel('Sample Size', fontsize=12) plt.legend() plt.xticks(rotation=45) # 如果年份太多,旋转x轴标签避免重叠 # 显示图表 plt.show()
关键点说明
regplot需要x轴是连续数值,所以必须把年份转换成整数/浮点数,不能是字符串或分类类型- 用同一个
plt.figure()画布,两个绘图函数会自动共用同一个坐标轴,实现叠加效果 - 如果想让趋势线更贴合,也可以尝试调整
regplot的order参数(比如设置order=2来拟合二次曲线)
这样你就能在柱状图上清晰看到每年样本量的变化,同时通过回归线直观展示整体增减趋势啦!
内容的提问来源于stack exchange,提问作者paddy
相关产品推荐
相关产品推荐

