python数据处理-matplotlib入门(2)
综合前述的类、函数、matplotlib等,完成一个随机移动的过程(注意要确定移动的次数,比如10万次),每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策确定的,最后显示出每次移动的位置的图表。
思考:
1)每次走动多少个像素,由随机函数决定,每次移动方向也随机确定。由随机方向和随机像素共同移动位置大小和方向。
2)保证将每次移动的位置保存在列表中,供后面matplotlib调用,生成图表。
故而,可以分成两个文件,一个为rand_moving类,生成走动像素、方向,并记录相关数据,保存在数列中,另一个为绘图模块randdraw_visual ,调用matplotlib和rand_moving类,生成一个实例,并调用计算出的数列组生成图表。
一、rand_moving.py文件定义功能如下
1、初始化程序,设置一个参数,即移动的次数,初始化位置全部设置为0
2、随机生成x,y的方向和移动像素,并相乘,得到相对移动距离,即为每次移动的距离和方向,即需要4个随机函数来分别确定水平方向和垂直方向的 移动位置大小和方向,
3,计算出下一个位置,并进行保存到位置数列中,即每走完一步后,在屏幕中的绝对位置。
如下:
from random import choice #random是系统自带的随机函数模块 class Rand_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] def fill_moving(self): #定义一个函数,用来计算移动方向和距离,并计算需要保存的位置信息 while len(self.x_values)<self.num_times:#循环不断运行,直到漫步包含所需数量的点num_times
x_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移动的距离 #原地不变 if x_step ==0 and y_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_step self.x_values.append(next_x ) #将每次计算的next_x存入到数列x_values中 self.y_values.append(next_y ) #将每次计算的next_y存入到数列y_values中