Python实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python实验报告(一)实验名称曲线分形图绘制实验目的学习turtle库画图命令,通过递归方式展示复杂表面下的内在数学秩序实验分析先定义一个函数,此函数作用为绘制其中一条分形曲线,其次主函数为设置窗口大小、画笔大小、画图速度、及笔的原位置,还有旋转笔头,把几个曲线连接在一起。实验流程图Koch函数:真假实验代码importturtle#引用turtle库defkoch(size,n):#定义一个koch函数,其参数为size,nifn==0:#判断是否为0阶turtle.fd(size)#前进size长else:foriin[0,90,-90,-90,90]:#循环(以每个转角)开始输入,sizen=0画size长的线逆时针旋转i度,并且画结束turtle.left(i)#逆时针旋转ikoch(size/3,n-1)#递归调用koch函数defmain():#主函数turtle.setup(600,600)#设置主窗口大小位置turtle.speed(0)#控制绘制速度turtle.up()#抬笔turtle.goto(-200,100)#移动画笔位置turtle.down()#落笔turtle.pensize(2)#设置画笔大小koch(400,3)#调用函数turtle.right(120)#顺时针旋转120koch(400,3)#调用函数turtle.right(120)#顺时针旋转120koch(400,3)#调用函数turtle.hideturtle()main()运行过程问题分析1、画出图像部分的函数是最为重要的,必须弄清楚它一次性是做了什么工作2、判断阶的意义在于是对其图像需要进行几次分形的判断3、Koch函数内的for循环中的循环条件是基于要分形的图形形状评阅内容填写规范20过程完整50实验结果30得分Python实验报告(二)实验名称图像的手绘效果实验目的使用numpy和PIL库提取图像特性形成手绘效果实验分析为了体现光照效果,设计一个光源,建立光源对各点梯度值的影响函数,进而运算出新的像素值,从而体现边界点的灰度变化,形成手绘效果。实验流程图实验代码fromPILimportImageimportnumpyasnp#库的引用vec_el=np.pi/2.2#光源的俯视角度,弧度值vec_az=np.pi/3.5#光源的方位角度,弧度值depth=20.#深度权值0~100im=Image.open('D:\ProgramFiles\我.jpg').convert('L')#打开原图,并将像素从RGB的3字节形式转变为单一数值形式a=np.asarray(im).astype('float')#把转化的单一数据用数组记录,类型为floatgrad=np.gradient(a)#取图像灰度的梯度值grad_x,grad_y=grad#取横纵图像的梯度值grad_x=grad_x*depth/100grad_y=grad_y*depth/100#总的梯度值dx=np.cos(vec_el)*np.cos(vec_az)#光源在x方向上明暗度变化的加权向量dy=np.cos(vec_el)*np.sin(vec_az)#光源在y方向上明暗度变化的加权向量dz=np.sin(vec_el)#光源在z方向上明暗度变化的加权向量A=np.sqrt(grad_x**2+grad_y**2+1)#A为梯度幅值,即为梯度大小uni_x=grad_x/Auni_y=grad_y/Auni_z=1./A#得到x,y,z各个方向上每个像素单位的梯度值a2=255*(dx*uni_x+dy*uni_y+dz*uni_z)#光源归一化a2=a2.clip(0,255)#防止溢出,归一化到0~255区间im2=Image.fromarray(a2.astype('uint8'))#从数组中恢复图像im2.save('HandDraw.jpg')#保存图像运行过程问题分析1、光源的俯视角度和方位角度以及深度加权都能可以影响整个图片的效果,depth较小时,画面显示轮廓描绘。2、光源对xyz轴的影响,即为把角度对应的柱坐标转化为了xyz的立体坐标系‘3、Clip函数的光源归一化限定范围的最大值应该和前面光源归一化式子用的值相同。评阅内容填写规范20过程完整50实验结果30得分Python实验报告(三)实验名称霍兰德人格分析雷达图实验目的使用matplotlib.pyplot绘制圆形多级雷达图,展示对象多属性的差异实验分析首先要更改默认设置,使其可以正确显示中文。利用np库内命令创建一些数组来放置数据及其标签。然后再把存放的数据平分在一个圆形,把数据头尾进行连接,然后根据数据画出雷达形状,并且进行填充。实验流程图实验代码importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlib#调用函数库matplotlib.rcParams['font.family']='SimHei'matplotlib.rcParams['font.sans-serif']=['SimHei']#为正确显示中文字体,更改默认设置,其中SimHe表示黑体r_labels=np.array(['研究型(I)','艺术型(A)',\'社会型(S)','企业型(E)','常规型(C)','现实型(R)'])#创造一个数组来记录类型nattr=6#可表示雷达图边数,也和转角度有关data=np.array([[0.20,0.90,0.50,0.30,0.30,0.6],[0.85,0.35,0.30,0.40,0.40,0.30],[0.43,0.89,0.30,0.28,0.22,0.30],[0.85,0.25,0.60,0.20,0.45,0.40],[0.20,0.38,0.87,0.45,0.32,0.28],[0.50,0.31,0.70,0.80,0.32,0.28]])#建立一个数组存储数据值data_labels=('歌手','实验员','艺术家','教师',\'社会工作者','企业家')#标签angles=np.linspace(0,2*np.pi,nattr,endpoint=False)#起点为0,终点为2Π,返回一个两端间数值平均分布长为nattr的数组data=np.concatenate((data,[data[0]]))angles=np.concatenate((angles,[angles[0]]))#用于将数据和角度的数组首位闭合起来fig=plt.figure(facecolor=white)#全局绘图区,白色底plt.subplot(111,polar=True)#建立一个极坐标类型子分区plt.plot(angles,data,'bo-',color='gray',linewidth=1,alpha=0.2)plt.plot(angles,data,'o-',linewidth=1.5,alpha=0.2)#按照data提供数据画出不规则六边形plt.fill(angles,data,alpha=0.25)#填充颜色plt.thetagrids(angles*180/np.pi,r_labels)#把标签安装在6个顶点plt.figtext(0.52,0.95,'霍兰德人格分析',ha='center',size=20)#全局添加文字,即添加标题legend=plt.legend(data_labels,loc=(0.94,0.80),labelspacing=0.1)#设置图注plt.setp(legend.get_texts(),fontsize='small')#绘制步阶图plt.grid(True)plt.show()运行过程问题分析1、运行过程出现Nomodulenamed'matplotlib',是因为没有安装matplotlib库,运行命令cmd安装此库就可以了。2、运行此过程中出现Unknownpropertyfrac,解决方法为删除掉frac命令,其结果不会产生影响评阅内容填写规范20过程完整50实验结果30得分

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功