用matplotlib+类绘制随机漫步图

当学会了制作散点图和折线图这些初级操作,我们就来学习用类制作随机漫步数据,并使用matplotlib将之呈现出来

1、创建Randomwalk类

from random import choice
class Randomwalk():
    #一个生成随机漫步数据的类
    def __init__(self,num_points=5000):
        """初始化随机漫步的属性"""
        self.num_points = num_points
        #所有的随机数据都起始于(0,0)
        self.x_values = [0]
        self.y_values = [0]

我们先创建一个类,创建了x,y两个列表并设置初始数据从(0,0)开始,随机漫步的默认点数为5000,这已经足够的大。此外,我们引入random模块中的choice函数,来随机生成哪有选择。

2、选择方向

def fill_walk(self):
        """计算随机漫步的所有点"""
        while len(self.x_values) < self.num_points:
            #设置前进的方向和距离
            x_direction = choice([1,-1])
            x_distance = choice([0,1,2,3,4])
            x_step = x_direction * x_distance
            y_direction = choice([1,-1])
            y_distance = choice([0,1,2,3,4])
            y_step = y_direction * y_distance
            #拒绝原地踏步
            if x_step == 0 and y_step == 0:
                continue
            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step
            self.x_values.append(next_x)
            self.y_values.append(next_y)

这个方法主要是告诉python:左走右走?走多少步?上走下走?走多少步?
首先,我们使用了while循环,当随机数据少于我们初定值时,这个将不断循环。

其次,我们使用了choice()函数,用choice(【1,-1】)给x_direction选择一个值,结果要么是向右走的1,要么是向左走的-1,并给定了choice(【0,1,2,3,4】)四个值随机选择一个整数,作为步数x_distance,然后我们用步数乘以方向作为沿x,y轴移动的距离。如果x_step为正,则代表向右走,为负,则代表向左走,为零则垂直移动;如果y_step为正则向上走,为负则向下走,为零则水平移动。当然如果x_step和y_step均为零,则意味着原地不动,所以我们拒绝这种情况,当出现两者均为零时,我们使用了continue,返回到while循环继续执行。

最后,为了持续获取x,y的数值,我们生成一个列表,每随机选择一个移动数据,我们就用此移动数据加上原先的数据位置点,并将此添加到相应的列表末尾,以作下次使用,如:self.x_values[-1]

3、用matplotlib绘制随机漫步图

import matplotlib.pyplot as plt
from randomwalk import Randomwalk
#创建一个实例,并将其所包含的点都绘制出来#
rw = Randomwalk()
rw.fill_walk()
plt.scatter(rw.x_values,rw.y_values,s=15)
plt.show()

首先倒入matplotlib中的pyplot模块和randomwalk类,然后创建了Randomwalk实例,并将其存储在rw中,在调用fill_walk,将数据传给scatter()中,并选择合适的尺寸点。

随机生成的图为(当然,每次随机生成的图都是不一样的):


随机漫步.png

你可能感兴趣的:(用matplotlib+类绘制随机漫步图)