1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【 matplotlib】散点图拟合曲线

【 matplotlib】散点图拟合曲线

时间:2022-06-11 15:24:03

相关推荐

【 matplotlib】散点图拟合曲线

文章目录

matplotlib的文档:/stable/tutorials/intermediate/constrainedlayout_guide.html

最近做一下统计拟合曲线的工作,记录一下。

matplot,numpy,pandas三者是分布开的。

step 1.引入相关库并设置中文

最后两行是设置中文否则中文不显示,显示方块

import pandas as pdimport matplotlib.pyplot as pltimport numpy as npfrom pylab import *from matplotlib.pyplot import MultipleLocatormpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = False

定义重要复用的函数

def show_scatter(x,y,x_label:str,y_label:str):plt.scatter(x, y)plt.xlabel(x_label)plt.ylabel(y_label)def show_plot(x,y,order:int,x_label:str,y_label:str):z5 = np.polyfit(np.array(x), np.array(y), order)plt.plot(x, y)plt.xlabel(x_label)plt.ylabel(y_label)def get_pd(input_1, columns):return pd.DataFrame(input_1,columns=columns)def get_fit(x,y,order=1):z = np.polyfit(x, y, order)return np.poly1d(z)

数据集

# 新疆莫索湾columns = ["age","h","ground_d"]# 新疆莫索湾input_1 = [[3,6,0],[4,28,0],[5,57,0],[6,96,0],[7,147,0],[8,198,5.7],[9,255,7.2],[10,306,8.9],[11,355,10.8],[12,405,12.5],[13,452,14.2],]# 辽宁章古台input_2 = [[3,24,0.46],[4,38,0.74],[5,63,1.24],[6,80,1.78],[7,104,2.55],[8,129,3.32],[9,166,4.17],[10,208,4.76],[11,261,5.64],[12,321,6.41],[13,384,7.25],]# 内蒙古红花尔基input_3 = [[3,21,0.38],[4,30,0.49],[5,39,0.65],[6,42,0.91],[7,52,1.17],[8,68,1.28],[9,87,2.33],[10,116,2.91],[11,133,3.55],[12,171,4.64],[13,199,5.57],]pd1 = get_pd(input_1,columns)pd2 = get_pd(input_2,columns)pd3 = get_pd(input_3,columns)

搞一个散点图:

# 构建age 和树高的关系show_scatter(pd1.age, pd1.h,"age/y","h/cm")

def plot_scatter_plot(color1,color2,color3,label1,label2,label3,pd1,pd2,pd3,k,v,title="三地年龄-树高曲线关系", x_label= "age/y",y_label="h/cm",fontsize = 10,y_locator=50):all_input = [[pd1,color1,label1],[pd2,color2,label2],[pd3,color3,label3]]fig,ax = plt.subplots(1,1,dpi=300,figsize=(3,2))plt.title(title,fontproperties='SimHei')plt.xlabel(x_label, fontsize=fontsize) # X轴标签plt.ylabel(y_label, fontsize=fontsize) # X轴标签#######x_major_locator = MultipleLocator(1) ax.xaxis.set_major_locator(x_major_locator)y_major_locator = MultipleLocator(y_locator)ax.yaxis.set_major_locator(y_major_locator)# 绘制散点图和拟合曲线for row in all_input:age = row[0][k]h = row[0][v]f = get_fit(age, h,3)s = 5label = row[2]color = row[1]plt.scatter(age, h,s=s,color=color)plt.plot(age, f(age),color=color,label=label)plt.legend(fontsize=8)plt.grid(True)plt.show()

# 进行一次多项式拟合color1,color2,color3 = "red","green","purple"label1,label2,label3 = "新疆莫索湾","辽宁章古台","内蒙红花尔基"plot_scatter_plot(color1,color2,color3,label1,label2,label3,pd1,pd2,pd3,k="age",v="h",title="樟子松三地年龄-树高曲线关系", x_label= "age/y",y_label="h/cm",fontsize = 10,y_locator=50)

pd1_copy =pd1[(pd1!=0).all(axis=1)]plot_scatter_plot(color1,color2,color3,label1,label2,label3,pd1_copy,pd2,pd3,k="age",v="ground_d",title="樟子松三地年龄-地径曲线关系", x_label= "age/y",y_label="ground_d/cm",fontsize = 10,y_locator=1)

plt.plot(range(1, epochs+1), train_acc, label='train_acc')plt.plot(range(1, epochs+1), test_acc, label='test_acc')plt.legend()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。