Python 使用matplotlib创建带有回归线的箱线图

Python 使用matplotlib创建带有回归线的箱线图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个数据框,其中一列表示“年”,一列表示变量“霜冻日”,每年有多个值。我想创建一个箱线图,显示每年的值分布,并添加一条回归线,显示50年期间平均霜冻天数的变化 我可以分别创建箱线图和线性回归图,但我无法让Python在同一个图上(在同一个轴上)同时绘制这两个图。结果应有约50个方框图,y轴显示霜冻日,x轴显示年份,根据线性模型,一条回归线穿过方框图 # Create the linear model x = PRISM_FD_A.year y = PRISM_FD_A.FrostDays

我有一个数据框,其中一列表示“年”,一列表示变量“霜冻日”,每年有多个值。我想创建一个箱线图,显示每年的值分布,并添加一条回归线,显示50年期间平均霜冻天数的变化

我可以分别创建箱线图和线性回归图,但我无法让Python在同一个图上(在同一个轴上)同时绘制这两个图。结果应有约50个方框图,y轴显示霜冻日,x轴显示年份,根据线性模型,一条回归线穿过方框图

# Create the linear model

x = PRISM_FD_A.year
y = PRISM_FD_A.FrostDays
stats = linregress(x, y)
m = stats.slope
b = stats.intercept
xmin = min(PRISM_FD_A.year)
xmax = max(PRISM_FD_A.year)
ymin = min(PRISM_FD_A.FrostDays)
ymax = max(PRISM_FD_A.FrostDays)
prd = max(PRISM_FD_A.year) - min(PRISM_FD_A.year)
ch = m * prd
ch_FD = ch.astype(int)
string = ("Total Change: %s days over %s years") % (ch_FD, prd)
r = stats.rvalue
r2 = round(((r)**2), 3)
rstring = "R-squared: %s" % r2

# Create the boxplot

ax = PRISM_FD_A.boxplot(by='year',
                       column='FrostDays',
                       grid=False)
ax.xaxis.set_major_locator(ticker.MultipleLocator(5))
plt.show()

我得到一个只有回归线的图,没有方块图


您需要使用
ax=ax
pandas
箱线图指定图形轴

PRISM_FD_A.boxplot(by='year',column='FrostDays',ax=ax,grid=False)

您需要使用
ax=ax
pandas
箱线图指定图形轴

PRISM_FD_A.boxplot(by='year',column='FrostDays',ax=ax,grid=False)