Python怎么利用随机函数生成变化图形(python,开发技术)

时间:2024-04-28 22:45:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

前言

思考:

1)每次走动多少个像素,由随机函数决定,每次移动方向也随机确定。由随机方向和随机像素共同移动位置大小和方向。

2)保证将每次移动的位置保存在列表中,供后面matplotlib调用,生成图表。

故而,可以分成两个文件,一个为rand_moving类,生成走动像素、方向,并记录相关数据,保存在数列中,另一个为绘图模块randdraw_visual ,调用matplotlib和rand_moving类,生成一个实例,并调用计算出的数列组生成图表。

一、rand_moving.py文件定义功能如下

1、初始化程序,设置一个参数,即移动的次数,初始化位置全部设置为0

2、随机生成x,y的方向和移动像素,并相乘,得到相对移动距离,即为每次移动的距离和方向,即需要4个随机函数来分别确定水平方向和垂直方向的 移动位置大小和方向,

3,计算出下一个位置,并进行保存到位置数列中,即每走完一步后,在屏幕中的绝对位置。

如下:

fromrandomimportchoice#random是系统自带的随机函数模块classRand_moving():#定义一个Rand_moving类def__init__(self,num_times=100000):#初始化,设置默认参数为10万,可以修改这个参数试试机器运行速度self.num_times=num_times#移动次数self.x_values=[0]#设置两个数列,用来保存每一步的位置,初始位置为(0,0),数列元素个数会一直增加到num_times,用来记录每一步的位置信息self.y_values=[0]deffill_moving(self):#定义一个函数,用来计算移动方向和距离,并计算需要保存的位置信息whilelen(self.x_values)<self.num_times:#循环不断运行,直到漫步包含所需数量的点num_timesx_direction=choice([1,-1])#x的移动方向,1向上,0不变,-1向下x_distance=choice([0,1,2,3,4,5])#x的每次移动的像素,x_step=x_direction*x_distance#移动方向乘以移动距离,以确定沿x移动的距离y_direction=choice([1,-1])#y的移动方向,1向上,0不变,-1向下y_distance=choice([0,1,2,3,4,5])#y的每次移动的像素,y_step=y_direction*y_distance#移动方向乘以移动距离,以确定沿y移动的距离#原地不变ifx_step==0andy_step==0:#x_step和y_step都为零,则意味着原地踏步continue#计算下一个点的位置坐标x和y值,并分别保存到数列x_values和y_values中next_x=self.x_values[-1]+x_step#self.x_values[-1]表示是数列最后一个值,初始为x_values=[0]next_y=self.y_values[-1]+y_stepself.x_values.append(next_x)#将每次计算的next_x存入到数列x_values中self.y_values.append(next_y)#将每次计算的next_y存入到数列y_values中

二、绘图模块

randdraw_visual.py

绘图模块randdraw_visual.py的功能如下:

1、调用matplotlib和rand_moving类;

2、rand_moving生成一个实例,并计算出的数列组生成图表;

3、用matplotlib中的方法生成图表

importmatplotlib.pyplotasplt#导入matplotlib模块fromrand_movingimport*#也可以用importrandom_moving注意使用过程中的细微差别,小写开头的rand_moving是文件(或称为模块,一个模块中可以有一个类,或多个类),大写开头Rand_moving是类。rm=Rand_moving()#利用导入的Rand_moving类,创建一个实例rm,这里没有给定参数,默认是10万,可以修改为其他数据。rm.fill_moving()#调用类的方法fill_moving(),并生成随机数列,存入到x_values和y_values中,plt.scatter(rm.x_values,rm.y_values,s=15)#调用实例rm中位置数列x_values和y_values生成图表plt.show()

程序运行效果(注意,为了对比,程序中创建了3个实例,其中一个为默认值,另两个为50万和5万,如果一直没显示,请耐心等会儿!)

Python怎么利用随机函数生成变化图形

上述三个实例处在同一图中,呈现不同颜色,如果只有一个实例,如何修改颜色?

入门(1)中,语句plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues,edgecolor='none', s=40) 是修改渐变色的,可偿试将randdraw_visual.py模块中进行如下修改:

plt.scatter(rm.x_values,rm.y_values,c=y_values,cmap=plt.cm.Reds,edgecolor='none',s=15)

注:c的参数是字符串,可以直接使用颜色的英文进行赋值,比如:c='yellow',见后面修改起点、终点颜色。

指定一个红色,一个蓝色,实际运行效果(有重复的地方,实例设置为蓝色在后面,将红色盖住):

Python怎么利用随机函数生成变化图形

除些之外,还可以对特定的点进行设定,也就是在语句plt.scatter(rm.x_values, rm.y_values,c=y_values, cmap=plt.cm.Reds,edgecolor='none',s=15)之后,再多几个相关语句,并给定相关点坐标。

importmatplotlib.pyplotaspltfromrand_movingimport*#也可以用importrandom_moving注意使用过程中的差别rm=Rand_moving()#创建一个实例rm,这里没有给定参数,默认是10万,可以修改为其他数据。rm.fill_moving()#调用类的方法fill_moving(),并生成随机数列,存入到x_values和y_values中plt.scatter(rm.x_values,rm.y_values,c=rm.y_values,cmap=plt.cm.Reds,edgecolor='none',s=15)#调用实例rm中数列x_values和y_values生成图表#调用实例rm中数列x_values和y_values生成图表new_rm=Rand_moving(500000)#创建一个实例new_rm,是50万次new_rm.fill_moving()plt.scatter(new_rm.x_values,new_rm.y_values,c=new_rm.y_values,cmap=plt.cm.Blues,edgecolor='none',s=15)#重绘起点,终点#因为两个实例的起点一样,只需一个起点即可plt.scatter(rm.x_values[0],rm.y_values[0],c='yellow',edgecolor='none',s=100)#设置起点,把s设置较大,以示区别#两个实例终点不同,分别重绘终点位置plt.scatter(rm.x_values[-1],rm.y_values[-1],c='brown',edgecolor='none',s=100)#设置实例rm的终点,思考为什么用[-1]plt.scatter(new_rm.x_values[-1],new_rm.y_values[-1],c='pink',edgecolor='none',s=100)#设置实例new_rm的终点plt.show()

实际运行效果:

Python怎么利用随机函数生成变化图形

显示图表屏幕大小

图表适合屏幕大小能有效地将数据中的规律呈现出来,如果要调整屏幕大小,可调整matplotlib输出的尺寸

plt.figure(dpi=128,figsize=(12, 10))

函数 figure() 用于指定图表的宽度、高度、分辨率和背景色。

形参 figsize 指定一个元组

形参 dpi 向 figure() 传递该分辨率

注意:plt.figure(dpi=128,figsize=(12, 10))语句要在其他plt开始语句的前面,才能调整显示屏幕的大小。

importmatplotlib.pyplotaspltfromrand_movingimport*#也可以用importrandom_moving注意使用过程中的差别#调整屏幕大小plt.figure(dpi=128,figsize=(12,10))#一开始就要定义显示的大小,当然,可以试一下,放到plt.show()之前其他位置的运行效果。rm=Rand_moving()#创建一个实例rm,这里没有给定参数,默认是10万,可以修改为其他数据。rm.fill_moving()#调用类的方法fill_moving(),并生成随机数列,存入到x_values和y_values中plt.scatter(rm.x_values,rm.y_values,c=rm.y_values,cmap=plt.cm.Reds,edgecolor='none',s=15)#调用实例rm中数列x_values和y_values生成图表#调用实例rm中数列x_values和y_values生成图表new_rm=Rand_moving(500000)#创建一个实例new_rm,是50万次new_rm.fill_moving()plt.scatter(new_rm.x_values,new_rm.y_values,c=new_rm.y_values,cmap=plt.cm.Blues,edgecolor='none',s=15)plt.show()
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Python怎么利用随机函数生成变化图形的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java线程终止实例分析下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18