Python实验报告.docx
《Python实验报告.docx》由会员分享,可在线阅读,更多相关《Python实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
![Python实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/28/fbb9ca1d-4542-4121-97aa-e9c5de48a515/fbb9ca1d-4542-4121-97aa-e9c5de48a5151.gif)
Python实验报告
Python实验报告
(一)
实验名称
曲线分形图绘制
实验目的
学习turtle库画图命令,通过递归方式展示复杂表面下的内在数学秩序
实验分析
先定义一个函数,此函数作用为绘制其中一条分形曲线,其次主函数为设置窗口大小、画笔大小、画图速度、及笔的原位置,还有旋转笔头,把几个曲线连接在一起。
实验流程图
Koch函数:
真假
实验代码
importturtle#引用turtle库
defkoch(size,n):
#定义一个koch函数,其参数为size,n
ifn==0:
#判断是否为0阶
(size)#前进size长
else:
foriin[0,90,-90,-90,90]:
#循环(以每个转角)
(i)#逆时针旋转i
koch(size/3,n-1)#递归调用koch函数
defmain():
#主函数
(600,600)#设置主窗口大小位置
(0)#控制绘制速度
()#抬笔
(-200,100)#移动画笔位置
()#落笔
(2)#设置画笔大小
koch(400,3)#调用函数
(120)#顺时针旋转120
koch(400,3)#调用函数
(120)#顺时针旋转120
koch(400,3)#调用函数
()
main()
运行过程
问题分析
1、画出图像部分的函数是最为重要的,必须弄清楚它一次性是做了什么工作
2、判断阶的意义在于是对其图像需要进行几次分形的判断
3、Koch函数内的for循环中的循环条件是基于要分形的图形形状
评阅
内容填写规范20
过程完整50
实验结果30
得分
Python实验报告
(二)
实验名称
图像的手绘效果
实验目的
使用numpy和PIL库提取图像特性形成手绘效果
实验分析
为了体现光照效果,设计一个光源,建立光源对各点梯度值的影响函数,进而运算出新的像素值,从而体现边界点的灰度变化,形成手绘效果。
实验流程图
实验代码
fromPILimportImage
importnumpyasnp#库的引用
vec_el=#光源的俯视角度,弧度值
vec_az=#光源的方位角度,弧度值
depth=20.#深度权值0~100
im=('D:
\ProgramFiles\我.jpg').convert('L')
#打开原图,并将像素从RGB的3字节形式转变为单一数值形式
a=(im).astype('float')
#把转化的单一数据用数组记录,类型为float
grad=(a)#取图像灰度的梯度值
grad_x,grad_y=grad#取横纵图像的梯度值
grad_x=grad_x*depth/100
grad_y=grad_y*depth/100
#总的梯度值
dx=(vec_el)*(vec_az)
#光源在x方向上明暗度变化的加权向量
dy=(vec_el)*(vec_az)
#光源在y方向上明暗度变化的加权向量
dz=(vec_el)
#光源在z方向上明暗度变化的加权向量
A=(grad_x**2+grad_y**2+1)
#A为梯度幅值,即为梯度大小
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1./A
#得到x,y,z各个方向上每个像素单位的梯度值
a2=255*(dx*uni_x+dy*uni_y+dz*uni_z)
#光源归一化
a2=(0,255)#防止溢出,归一化到0~255区间
im2=('uint8'))
#从数组中恢复图像
('')#保存图像
运行过程
问题分析
1、光源的俯视角度和方位角度以及深度加权都能可以影响整个图片的效果,depth较小时,画面显示轮廓描绘。
2、光源对xyz轴的影响,即为把角度对应的柱坐标转化为了xyz的立体坐标系‘
3、Clip函数的光源归一化限定范围的最大值应该和前面光源归一化式子用的值相同。
评阅
内容填写规范20
过程完整50
实验结果30
得分
Python实验报告(三)
实验名称
霍兰德人格分析雷达图
实验目的
使用绘制圆形多级雷达图,展示对象多属性的差异
实验分析
首先要更改默认设置,使其可以正确显示中文。
利用np库内命令创建一些数组来放置数据及其标签。
然后再把存放的数据平分在一个圆形,把数据头尾进行连接,然后根据数据画出雷达形状,并且进行填充。
实验流程图
实验代码
importnumpyasnp
importasplt
importmatplotlib
#调用函数库
['']='SimHei'
['']=['SimHei']
#为正确显示中文字体,更改默认设置,其中SimHe表示黑体
r_labels=(['研究型(I)','艺术型(A)',\
'社会型(S)','企业型(E)','常规型(C)','现实型(R)'])
#创造一个数组来记录类型
nattr=6#可表示雷达图边数,也和转角度有关
data=([[,,,,,],
[,,,,,],
[,,,,,],
[,,,,,],
[,,,,,],
[,,,,,]])
#建立一个数组存储数据值
data_labels=('歌手','实验员','艺术家','教师',\
'社会工作者','企业家')
#标签
angles=(0,2*,nattr,endpoint=False)
#起点为0,终点为2Π,返回一个两端间数值平均分布长为nattr的数组
data=((data,[data[0]]))
angles=((angles,[angles[0]]))
#用于将数据和角度的数组首位闭合起来
fig=(facecolor="white")#全局绘图区,白色底
(111,polar=True)#建立一个极坐标类型子分区
(angles,data,'bo-',color='gray',linewidth=1,alpha=
(angles,data,'o-',linewidth=,alpha=
#按照data提供数据画出不规则六边形
(angles,data,alpha=#填充颜色
(angles*180/,r_labels)#把标签安装在6个顶点
,'霍兰德人格分析',ha='center',size=20)
#全局添加文字,即添加标题
legend=(data_labels,loc=,,labelspacing=
#设置图注
(),fontsize='small')
#绘制步阶图
(True)
()
运行过程
问题分析
1、运行过程出现Nomodulenamed'matplotlib',是因为没有安装matplotlib库,运行命令cmd安装此库就可以了。
2、运行此过程中出现Unknownpropertyfrac,解决方法为删除掉frac命令,其结果不会产生影响
评阅
内容填写规范20
过程完整50
实验结果30
得分