python 画曲线,python画线性回归图
本文详细介绍海生的绘制变量之间线型回归(linear regression)曲线,涉及如下两个重要函数:
seaborn.regplotseaborn.lmplot
本文速览
目录
1、绘图数据准备
2、seaborn.regplot
regplot默认参数线型回归图
分别设置点和拟合线属性
置信区间(置信区间)设置
拟合线延伸与坐标轴相交
拟合离散变量曲线
多项式回归(多项式回归)拟合曲线
3、seaborn.lmplot
按变量分类拟合回归线
散点标记设置
散点调色盘
拟合线属性设置
绘制分面图
1、绘图数据准备依旧使用鸢尾花iris数据集,详细介绍见之前文章。
#导入本帖要用到的库,声明如下:导入matplotlib。py plot as pltimport numpy as NP import pandas as PD import palettable from pandas import Series,data frame from sk learn import datasets import seaborn as SNS import palettable #导入鸢尾花虹膜数据集(方法一)#该方法更有助于理解数据集iris=datasets.load_iris()x,y=iris.data,iris。targety _ 1=NP。array([ setosa if I==0 else versicolor if I==1 else virginica for I in y])PD _ iris=PD .DataFrame(np.hstack((x,y _ 1。shape(150,1))),columns=[萼片长度(厘米),萼片宽度(厘米),花瓣长度(厘米),花瓣宽度(厘米),类]) #astype修改pd_iris中数据类型目标为float64pd_iris[萼片长度(厘米)]=pd_iris[萼片长度(厘米)]。astype(float64)pd_iris[萼片宽度(厘米)]=pd_iris[萼片宽度(厘米)]。astype(float64)pd_iris[花瓣长度(厘米)]=pd_iris[花瓣长度(厘米)]。astype(float64)pd_iris[花瓣宽度(厘米)]=pd_iris[花瓣宽度(厘米)]。astype(float64) #导入鸢尾花虹膜数据集(方法二)#该方法有时候会卡巴斯基,所以弃而不用#将海生的导入为SNS # iris _ SNS=SNS。load _ dataset( iris )数据集简单查看
2、seaborn。雷杰普西博恩。regplot(x,y,data=None,x_estimator=None,x_bins=None,x_ci=ci ,scatter=True,fit_reg=True,ci=95,n_boot=1000,units=None,seed=None,order=1,logistic=False,lowess=False,robust=False,logx=False,x_partial=None,y_partial=None,truncate=True,dropna=True,x_jitter=None,y_jitter=None
regplot默认参数线型回归图PLT。图(dpi=100)社交网络。set(style=白色网格,font_scale=1.2)#设置主题,文本大小g=sns.regplot(x=萼片长度(厘米),y=萼片宽度(厘米),data=pd_iris,color=#000000 ,#设置标记及线的颜色marker=* ,#设置标记形状)
分别设置点和拟合线属性PLT。图(dpi=100)社交网络。set(style=白色网格,font _ scale=1.2)g=SNS。regplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,color=#000000 ,marker=* ,scatter_kws={s: 60, color:g ,},#设置散点属性,参考PLT。散布线_ kws={ 线条样式:-,颜色: r}#设置线属性,参考plt。绘图
置信区间(置信区间)设置注意拟合线周围阴影面积变化
PLT。图(dpi=100)社交网络。set(style=白色网格,font _ scale=1.2)g=SNS。regplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,color=#000000 ,marker=* ,ci=60,#置信区间设置,默认为95%置信区间,越大线周围阴影部分面积越大)
拟合线延伸与坐标轴相交#将回归线延伸到轴界限splt。图(dpi=100)社交网络。set(style=白色网格,font _ scale=1.2)g=SNS。regplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,color=#000000 ,marker=* ,truncate=False,#让拟合线与轴相交)
拟合离散变量曲线PLT。图(dpi=100)社交网络。set(style= white grid ,font _ scale=1.2)x _ discrete=[0 if I== setosa else 1 if I== versicolor else 2 for I in PD _ iris[ class ]]# g=SNS。regplot(x=x _ discrete,y=萼片宽度(厘米),data=pd_iris,#x此时为离散变量color=#000000 ,marker=* ,)
多项式回归(多项式回归)拟合曲线PLT。图(dpi=110)社交网络。set(style=白色网格,font _ scale=1.2)g=SNS。regplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,marker=* ,order=4,#默认为1,越大越弯曲scatter_kws={s: 60, color:#016392 ,},#设置散点属性,参考PLT。散点图line _ kws={ 线条样式:-,颜色: #c72e29}#设置线属性,参考plt。绘图)
3、seaborn.lmplot seaborn.lmplot(x,y,data,hue=None,col=None,row=None,palette=None,col_wrap=None,height=5,aspect=1,markers=o ,sharex=True,sharey=True,hue_order=None,col_order=None,legend=True,legend_out=True,x_estimator=None,x_bins=None,x_ci=ci ,scatter=True,fit_reg=True,ci=95
seaborn.lmplot结合seaborn.regplot()和FacetGrid,比seaborn.regplot()更灵活,可绘制更个性化的图形。
按变量分类拟合回归线PLT。图(dpi=100)社交网络。set(style= white grid ,font_scale=1.2)g=sns.lmplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,hue=class ,)g.fig.set_size_inches(10,8)
散点标记设置PLT。图(dpi=100)社交网络。set(style= white grid ,font_scale=1.2)g=sns.lmplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,hue=class ,markers=[ ,^,o],#设置散点标记)g .图set _ size _ inches(10,8)
散点调色盘PLT。图(dpi=100)社交网络。set(style= white grid ,font_scale=1.2)g=sns.lmplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,hue=class ,markers=[ ,^,* ,scatter_kws={s:180},palette=[#01a2d9 , #31A354 , #c72e29],#调色盘)g.fig.set_size_inches(10,8)
拟合线属性设置PLT。图(dpi=100)社交网络。set(style= white grid ,font_scale=1.2)g=sns.lmplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,hue=class ,markers=[ ,^,* ,scatter_kws={s:180},line_kws={linestyle: - },#拟合线属性设置palette=[#01a2d9 , #31A354 , #c72e29],)g.fig.set_size_inches(10,8)
绘制分面图PLT。图(dpi=100)社交网络。set(style= white grid ,font_scale=1.2)g=sns.lmplot(x=萼片长度(cm),y=萼片宽度(cm),data=pd_iris,col=class ,#按班级绘制分面图markers=* ,scatter_kws={s:150, color:#01a2d9},line_kws={linestyle: -, color:#c72e29},#直线属性设置)g.fig.set_size_inches(10,8)
参考文献:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。