python 线性拟合图、散点图
短信预约 -IT技能 免费直播动态提醒
- 散点图线性拟合
from scipy import statsimport numpy as npimport matplotlib.pyplot as plt#数据生成x = np.linspace(30,79,20)y = np.linspace(40,100,20) + np.random.randint(10,size=20)#设置图片大小plt.figure(figsize=(6,6))#获取数据范围cmax = max(max(x),max(y))cmin = min(min(x),min(y))#对散点数据进行线性拟合 获取斜率 截距 R2slope, intercept, r_value, p_value, std_err = stats.linregress(x, y) #斜率 截距 R2#画拟合线X1 = np.arange (0,int(cmax),100)Y1 = np.array([ intercept+ slope * x for x in X1])plt.plot(X1,Y1)#统一 x y 轴范围plt.xlim(cmin,cmax )plt.ylim(cmin,cmax )#统一 x y 轴坐标X2 = np.linspace(0,cmax*1.1,5)Y2 = np.linspace(0,cmax*1.1,5)plt.xticks(X2)plt.yticks(Y2)#画建1:1 标准线plt.plot(range(int(cmax*1.1)),color='black')#画散点图plt.scatter(x,y)#写入公式以及R2plt.text(cmax*0.1,cmax*0.9,'R$^2$=%s'%(np.around(r_value**2,2)),fontsize=20)plt.text(cmax*0.1,cmax*0.8,'y=%s*x+%s'%(np.around(slope,2),np.around(intercept,2)),fontsize=15)#写入坐标轴labelplt.xlabel('坐标轴x',fontproperties='KaiTi',fontsize=20)plt.ylabel('坐标轴y',fontproperties='KaiTi',fontsize=20)#设置刻度大小plt.tick_params(labelsize=15)#保存路径 格式 将边缘空白部分去除,设置分辨率为300plt.savefig('test.jpg',bbox_inches='tight',dpi=300)
- 散点图无截距线性拟合 (2023/08/31)
#拟合函数定义from scipy import optimizefrom sklearn.metrics import r2_scorefrom scipy import statsimport numpy as npimport matplotlib.pyplot as pltdef fun1(x, a): return a * x#数据生成x = np.linspace(30,79,20)y = np.linspace(40,100,20) + np.random.randint(10,size=20)#设置图片大小plt.figure(figsize=(6,6))#获取数据范围cmax = max(max(x),max(y))cmin = min(min(x),min(y))#无截距拟合slope = optimize.curve_fit(fun1,x,y)[0][0]r = r2_score(slope*x,y)config = {"font.family":'serif',"font.size": 20,"mathtext.fontset":'stix',"font.serif": ['Times New Roman'], }plt.rcParams.update(config)#画拟合线X1 = np.arange (0,int(cmax),100)Y1 = np.array([ slope * x for x in X1])plt.plot(X1,Y1)#统一 x y 轴范围plt.xlim(cmin,cmax )plt.ylim(cmin,cmax )#统一 x y 轴坐标X2 = np.linspace(0,cmax*1.1,5)Y2 = np.linspace(0,cmax*1.1,5)plt.xticks(X2)plt.yticks(Y2)#画建1:1 标准线plt.plot(range(int(cmax*1.1)),color='black')#画散点图plt.scatter(x,y)#写入公式以及R2plt.text(cmax*0.1,cmax*0.9,'R$^2$=%s'%(np.around(r**2,2)),fontsize=20)plt.text(cmax*0.1,cmax*0.8,'y=%s*x'%(np.around(slope,2)),fontsize=20)#写入坐标轴labelplt.xlabel('Xlabel',fontsize=20)plt.ylabel('Ylabel',fontsize=20)#设置刻度大小plt.tick_params(labelsize=15)plt.show()#保存路径 格式 将边缘空白部分去除,设置分辨率为300#plt.savefig('test.jpg',bbox_inches='tight',dpi=300)
来源地址:https://blog.csdn.net/horizon012/article/details/129379841
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341