Python关于matplotlib.pyplot和numpy的使用:绘制散点图及进行线性拟合

目的:绘制出照射量率与计数率的关系,并进行拟合

 excel效果:

打开文件并读取数据

x是横坐标对应照射量率,y和z是纵坐标分别对应计数率和净计数率

import matplotlib.pyplot as plt
import openpyxl
import numpy
wb=openpyxl.load_workbook("测试1.xlsx")
ws=wb.active
print(ws)
b=ws['B1':'K1']#能访问B1到K1这一行,但返回的是元组类型,且不能使用.value
b=list(b)#读取B1到K1的数据
b=b[0]
x=[]
for i in b:
    x.append(i.value)
print("x=",x)

c=ws['B4':'K4']
c=list(c)
c=c[0]
y=[]
for i in c:
    y.append(i.value)
print("y=",y)

jc=ws['B3':'K3']
jc=list(jc)
jc=jc[0]
z=[]
for i in jc:
    z.append(i.value)
print("z=",z)
<Worksheet "sh2">
x= [933.33, 830.67, 727.1, 625.33, 522.67, 420, 317.33, 214.67, 112, 9.33]
y= [2585.883333333333, 2198.4333333333334, 1980.7, 1720.176666666667, 1499.93, 1167.6466666666665, 933.0066666666667, 633.72, 372.5233333333333, 88.33333333333333]
z= [2531.4866666666667, 2144.036666666667, 1926.3033333333333, 1665.7800000000002, 1445.5333333333333, 1113.2499999999998, 878.61, 579.3233333333334, 318.12666666666667, 33.93666666666666]

使用numpy.polyfit()获取最小二乘拟合的系数

deg=1表示拟合次数为1,numpy.polyfit()返回的值是列表

根据降幂顺序给出系数值

p=numpy.polyfit(x,y,deg=1)
print("p是",p)
p是 [ 2.63872931 74.55261783]

将拟合曲线的值存入y1中,y1就是根据y(计数率)的拟合线性值

a1=p[0]
a2=p[1]
y1=[]
for i in x:
    y1.append(a1*i+a2)
print("y1=",y1)
y1= [2537.3578432844147, 2266.465892479527, 1993.172698003956, 1724.629216283584, 1453.7372654786961, 1182.8189273807243, 911.9005892827524, 641.008638477865, 370.0903003798931, 99.17196228192121]

同样操作,得到y2,y2是根据z(净计数率)的拟合线性值

p1=numpy.polyfit(x,z,deg=1)
print("p1是",p1)
b1=p1[0]
b2=p1[1]
y2=[]
for i in x:
    y2.append(b1*i+b2)
print("y2=",y2)
p1是 [ 2.63872931 20.15595117]
y2= [2482.9611766177486, 2212.069225812861, 1938.7760313372896, 1670.2325496169174, 1399.3405988120296, 1128.4222607140578, 857.5039226160858, 586.6119718111981, 315.6936337132262, 44.77529561525421]

绘制曲线

使用plt.plot()绘制拟合线,使用plt.scatter()绘制散点图

多次绘制可在同一张图进行绘制

plt.scatter(x,y,c='b')中,x,y是要输入的横纵坐标,要以列表类型输入;c是可选的绘制曲线样式

plt.plot(x,y,'b--')中,x,y是要输入的横纵坐标,要以列表类型输入;'b--'中"b"是颜色,"--"是形状

plt.scatter(x,y,c='b')#绘制散点图
plt.plot(x,y1,'b--')
plt.scatter(x,z,c='r')
plt.plot(x,y2,'r--')
plt.show()

学生信息管理系统是一个基于Java Web技术的现代化信息管理平台,主要用于高校、中小学等教育机构的学生信息管理工作。该系统采用MVC(Model-View-Controller)架构模式分层架构设计,结合DAO(Data Access Object)设计模式,实现了学生信息的全面数字化管理。系统核心功能包括学生信息管理、课程管理、成绩管理用户权限管理。学生信息管理模块支持学生基本信息的增删改查操作,如姓名、学号、性别、出生日期、联系方式等;课程管理模块允许管理员设置课程信息,包括课程名称、学分、授课教师等;成绩管理模块提供成绩录入、查询、统计分析功能,支持按学生、课程或班级进行成绩汇总;用户权限管理模块确保系统安全,区分管理员、教师学生等不同角色的操作权限。技术栈方面,系统后端采用Java编程语言,使用Servlet作为控制器处理业务逻辑,JSP(JavaServer Pages)实现动态页面渲染,前端结合HTML5CSS3构建响应式用户界面,确保系统在不同设备上的良好显示效果。数据库采用MySQL进行数据存储,通过JDBC连接实现高效的数据访问。系统遵循软件工程的最佳实践,代码结构清晰,注释完整,便于二次开发维护。应用场景广泛,适用于各类教育机构的学生信息管理需求,如高校的学籍管理、中小学的学生档案管理、培训机构的学员信息跟踪等。系统设计注重实用性易用性,界面简洁直观,操作流程优化,减少了人工管理的繁琐性,提高了工作效率。作为毕业设计资源,本系统提供了完整的源码详细的设计文档,包括需求分析、系统设计、数据库设计、实现细节测试报告等,适合计算机科学、软件工程等相关专业的学生参考学习。源码经过优化,可直接部署运行,帮助用户快速理解Java Web开发的核心技术MVC架构的实际应用。资源价值突出,不仅是一个功能完备的学生信息管理系统,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值