资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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=):  # 初始化,设置默认参数为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)#循环不断运行,直到漫步包含所需数量的点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中

当前名称:python数据可视化-matplotlib入门(2)-利用随机函数生成变化图形
分享链接:http://cdkjz.cn/article/dsogpio.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220