创建Randomwalk()类

我们将使用Python来生成随机漫步数据,再使用matplotlib以引入瞩目的方式将这些数据呈现出来

首先创建类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]
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 #计算下一个点的x和y值
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)

__init__()和fill_walk(),其中后者计算随机漫步经过的所有点。

我们使用choice([1,-1])给direction选择一个值,结果要么是表示向右走1,要么表示向左走-1,接下来,choice([0,1,2,3,4])随机的选择一个0~4之间的整数,告诉Python沿着指定的方向走多远(x_distance)

绘制随机漫步图

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

运行结果:

我们首先导入模块pyplot和Randomwalk类,然后我们创建一个实例,并将其存储到rw中,再调用fill_walk(),我们将随机漫步的x与y值传递给scatter(),并选择了合适的点尺寸,显示包含5000个点的随机漫步。

模拟多次随机漫步

import matplotlib.pyplot as plt
from matplotlib_test.random_walk import RandomWalk
#只要程序处理活动状态,就不断的随机模拟
while True:
#创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values,rw.y_values,s=15)
plt.show()
keep_running = input("Make another walk?(y/n):")
if keep_running == 'n':
break

这些代码模拟一次随机漫步,在matplotlib查看器中显示结果,再不关闭查看器的情况下暂停。如果你关闭了查看器,程序询问你是否再模拟一次随机漫步,如果你输入y,那么将继续,如果你输入n,那么将退出。

设置随机漫步图样式

1.给点着色

我们使用颜色映射来指出个点的先后顺序,并删除每个点的黑色轮廓,让他们的颜色更明显,为根据漫步中各点的先后顺序进行着色,我们传递参数c,并将其设置为一个列表,其中包含个点的先后顺序。

运行结果:

2.重新绘制起点与终点

为了凸显上图的起点跟终点,我们可以这么做

运行结果:

3.隐藏坐标轴

为了修改坐标轴,使用函数plt.axes()来将坐标轴的可见性设置为False

运行结果:

4.增加点数

下面我们增加点数,在创建RandomWalk实例时增大num_points的值

运行结果:

5.调整窗口的尺寸大小

图表适合屏幕大小时,更有效的将数据中的规律呈现出来

窗口明显变大

如果知道自己系统的分辨率,还可以使用形参dpi传递该分辨率

plt.figure(dpi=128,figsize=(10,6))

【Python】随机漫步的更多相关文章

  1. python随机漫步

  2. Python 项目实践二(生成数据)第二篇之随机漫步

    接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...

  3. Python入门-随机漫步

    Python入门-随机漫步,贴代码吧,都在代码里面 代码1 class文件 random_walk.py from random import choice class RandomWalk(): # ...

  4. python数据可视化(一)——绘制随机漫步图

    数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关. python有一系列的可视化和分析工具,最流行的工具之一是matplotlib,它是一个数学绘图库. 实现绘制随机漫步图   利用ra ...

  5. 数据可视化:使用python代码实现可视数据随机漫步图

    #2020/4/5 ,是开博的第一天,希望和大家相互交流学习,很开森,哈哈~ #像个傻子哟~       #好,我们进入正题, #实现功能:利用python实现数据随机漫步,漫步点数据可视化 #什么是 ...

  6. 今天给大家分享用Python matplotlib来写随机漫步的小程序

    先安装两个库: pip install matplotlib pip install numpy 引用库: import matplotlib.pyplot as mp import numpy as ...

  7. Python实现随机漫步

    随机漫步生成是无规则的,是系统自行选择的结果.根据设定的规则自定生成,上下左右的方位,每次所经过的方向路径. 首先,创建一个RandomWalk()类和fill_walk()函数 random_wal ...

  8. 醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)

    世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random  Walk)是一种解决随机问题的方法,它 ...

  9. NumPy 之 案例(随机漫步)

    import numpy as np The numpy.random module supplements(补充) the built-in Python random with functions ...

随机推荐

  1. 【bzoj4966】总统选举 随机化+线段树

    题目描述 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任.作为一名民主人士,小C决 ...

  2. 地理课(geography)

    地理课(geography) 题目描述 地理课上,老师给出了一个巨大的地图,由于世界日新月异,会有一些道路在某一时刻被删除,也会有一些道路在某一时刻被修建.这里的道路均为双向的. 老师认为,有一些城市 ...

  3. ceoi2017 Building Bridges(build)

    Building Bridges(build) 题目描述 A wide river has nn pillars of possibly different heights standing out ...

  4. python和tensorflow安装

    一.Python安装 python采用anaconda安装,简单方便,下载python3.6的anaconda  linux64的sh安装文件. 1.bash Anaconda-2.1.0-Linux ...

  5. c#的字典序

    //Dictionary System.Collections.DictionaryEntry dic=new System.Collections.DictionaryEntry("key ...

  6. jquery 获取被点击元素的id属性值

    有时候可能需要获取被点击元素的一些信息,此处就以id属性为例子,进行演示一下. $(document).click(function (e){ var v_id=e.target.id; consol ...

  7. CODEVS【1380】没有上司的舞会

    题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会 ...

  8. javascript屏蔽脏字

    原文发布时间为:2009-04-16 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  9. 调用Outlook发送邮件

    #region 查找与指定文件关联在一起的程序的文件名 /// <summary> /// 查找与指定文件关联在一起的程序的文件名 /// </summary> /// < ...

  10. 802.11 MAC层

    1. 介绍 本文主要介绍了802.11 MAC层 2. 访问机制 CSMA/CA:  Carrier Sense Multiple Access with Collision Avoidance Wi ...