当学会了制作散点图和折线图这些初级操作,我们就来学习用类制作随机漫步数据,并使用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()中,并选择合适的尺寸点。
随机生成的图为(当然,每次随机生成的图都是不一样的):