用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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们将使用Python来生成随机漫步数据,再使用matplotlib将这些数据呈现出来。随机漫步的路径是这样的:每...
    陈容喜阅读 472评论 0 0
  • Matplotlib 入门教程 来源:Introduction to Matplotlib and basic l...
    布客飞龙阅读 31,881评论 5 162
  • 下午好,亲爱的小伙伴 周检视韩杰#2018年1月第5周(1.28-2.3) 没有反思的人生不值得过 嘉许自己的每一...
    JIE胭脂雪阅读 266评论 0 0
  • 为期七天幼儿师资培训结束了,感觉时间过得太快了。回想这七天当中的点点滴滴,有太多的故事和感动!还记得第一天来到学校...
    志成妈妈阅读 373评论 0 0
  • 一九六七年,当时是哈佛大学心理学教授的米尔格兰姆随便招募了三百多名志愿者,请他们邮寄一个信函,目的地是米尔格兰姆指...
    江苏苇笛阅读 516评论 0 1