#所以我的代码看起来像这样,但我不知道如何从回归线提取y值或#甚至可能显示曲线的方程。
导入plotnine为p9
#计算最佳拟合线
slope, intercept, r_value, p_value, std_err = stats.linregress(df['gross_power'],df['temp_drop_a'])
df['fit']=df.gross_power*slope+intercept
#格式文本txt= 'y = {:4.2e} x + {:4.2E}; R^2= {:2.2f}'.format(slope, intercept, r_value*r_value)
#创建阴谋。"因子"是一个很好的技巧,可以强制使用离散色阶
plot=(p9.ggplot(data=df, mapping= p9.aes('gross_power','temp_drop_a'))
+ p9.geom_point(p9.aes())
+ p9.xlab('Gross Generation (MW)')+ p9.ylab(r'Air Heater Temperature Generator A (F)')
+ p9.geom_line(p9.aes(x='gross_power', y='fit'), color='red')
+ p9.annotate('text', x= 3, y = 35, label = txt))
print(plot)
你的代码为我工作。你遇到了什么问题?
预测的y值是数据框架中的fit
。您可以将y值提取为:
y_hat = df['fit']
若要在绘图上显示等式,请使用annotate
。完整代码:
import pandas as pd
from scipy import stats
from plotnine import *
from plotnine.data import mtcars as df
slope, intercept, r_value, p_value, std_err = stats.linregress(df['hp'],df['mpg'])
df['fit'] = df.hp*slope+intercept
y_hat = df['fit']
txt= 'y = {:4.2e} x + {:4.2E}; R^2= {:2.2f}'.format(slope, intercept, r_value*r_value)
p = (ggplot(data=df)
+ theme_light(9)
+ geom_point(aes('hp','mpg'), size=1, colour='#E78587')
+ geom_line(aes(x='hp', y='fit'), color='#8B0000')
+ labs(x='Gross horsepower', y='Miles per gallon')
+ annotate('text', x=250, y=5, label=txt, size=8, color='#8B0000')
)
p
也许你的代码中有temp_drop_a
的问题。我不知道这是什么,它也没有出现在源数据集中。也不像一个典型的解释变量。