创建Randomwalk()类

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

首先创建类Randomwalk()

  1. from random import choice
  2.  
  3. class RandomWalk():
  4. '''一个生成随机漫步数据的类'''
  5. def __init__(self,num_points=5000):
  6. '''初始化随机漫步的属性'''
  7. self.num_points = num_points
  8.  
  9. #所有的随机漫步都始于(0,0)
  10. self.x_values = [0]
  11. self.y_values = [0]
  12. def fill_walk(self):
  13. '''计算随机漫步的所有点'''
  14.  
  15. # 不断漫步,直到列表到达指定长度
  16. while len(self.x_values)<self.num_points:
  17. # 决定前进方向以及沿这个方向前进的距离
  18. x_direction = choice([1,-1])
  19. x_distance = choice([0,1,2,3,4])
  20. x_step = x_direction*x_distance
  21.  
  22. y_direction = choice([1, -1])
  23. y_distance = choice([0, 1, 2, 3, 4])
  24. y_step = y_direction * y_distance
  25.  
  26. #拒绝原地踏步
  27. if x_step == 0 and y_step == 0:
  28. continue
  29.  
  30. #计算下一个点的x和y值
  31. next_x = self.x_values[-1]+x_step
  32. next_y = self.y_values[-1] + y_step
  33.  
  34. self.x_values.append(next_x)
  35. 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)

绘制随机漫步图

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

运行结果:

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

模拟多次随机漫步

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

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

设置随机漫步图样式

1.给点着色

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

运行结果:

2.重新绘制起点与终点

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

运行结果:

3.隐藏坐标轴

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

运行结果:

4.增加点数

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

运行结果:

5.调整窗口的尺寸大小

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

窗口明显变大

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

  1. 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. Pointcut is not well-formed: expecting 'identifier' at character position 0 ^ || Pointcut is not well-formed: expecting ')' at character position 11 ^

    错误提示: 解决方法1:指定execution 在执行目标方法之前指定execution 解决方法2:可能是execution写错了.请仔细检查. 其他——execution参数设置(带问好的可以不配 ...

  2. eclipse快捷键补全

    Eclipse中 补全快捷键 默认Alt+/ 但是每个人习惯有所不同 我需要来修改自己熟悉的快捷键 windows->preferences->General->keys将Conte ...

  3. 挖煤(coal)

    挖煤(coal) solution 我好弱,啥也想不到. 想了很久dp,这有后效性啊. 结果倒着做就可以了,因为后面的不会影响前面的. 考虑前面的影响后面:挖煤相当于让后面所有a[I]*(1+k%) ...

  4. [USACO Section 5.3]量取牛奶 Milk Measuring (动态规划,背包$dp$)

    题目链接 Solution 完全背包 \(dp\) , 同时再加一个数组 \(v[i][j]\) 记录当总和为\(j\) 时第 \(i\) 种物品是否被选. 为保证从小到大和字典序,先将瓶子按大小排序 ...

  5. Position 属性的学习理解

    position 当时在学习的时候也没有进入深入的研究,主要是因为平时自己用的不是很多.今天看到了篇解释不错的文章就整理,学习下. http://www.cnblogs.com/bokin/archi ...

  6. cf 235C 后缀自动机

    题目大意 给定字符串\(S\)与\(n<=10^5\)个串\(x_1,x_2...x_n\)(总长\(\le10^6\)) 对于每个\(x_i\),输出有多少个\(S\)的子串与\(x_i\)循 ...

  7. jquery.slider jquery滑块插件

    原文发布时间为:2011-03-08 -- 来源于本人的百度文章 [由搬家工具导入] http://jqueryui.com/demos/slider jquery滑块插件

  8. 倒计时浏览器跳转JavaScript

    原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>显示时间</title> ...

  9. spring一些总结

    Spring中三种实例化bean的方法: 1)使用类构造器   <bean id="orderService" class="cn.itcast.OrderServ ...

  10. Codeforces 475D CGCDSSQ 区间gcd值

    题目链接 题意 给定一个长度为 \(n\) 的数列 \(a_1,...,a_n\) 与 \(q\) 个询问 \(x_1,...,x_q\),对于每个 \(x_i\) 回答有多少对 \((l,r)\) ...