python使用matplotlib库生成随机漫步图


Posted in Python onAugust 27, 2018

本教程使用python来生成随机漫步数据,再使用matplotlib将数据呈现出来

开发环境

操作系统: Windows10
IDE: Pycharm 2017.1.3
Python版本: Python3.6
Python第三方库:matplotlib

开始实战

1. 创建RandomWalk()类

为了模拟随机漫步,我们将创建一个名为RandomWalk的类, 它随机地选择方向。

from random import choice

class RandomWalk():
  """一个生成随机漫步数据的类"""

  def __init__(self, num_points=50000):
    """初始化随机漫步的属性"""
    self.num_points = num_points

    # 所有随机漫步都始于(0,0)
    self.x_values = [0]
    self.y_values = [0]

这个类有三个属性,一个存储随机漫步次数的变量,其他两个存储随机漫步经过的x和y坐标。RandomWalk只包含两个方法:init()和 fill_walk()

2. 选择方向

我们将使用 fill_walk() 来生成漫步包含的点,并决定漫步的方向

def fill_walk(self):
    """计算随机漫步包含的所有点"""

    # 不断漫步,直到列表达到指定的长度
    while len(self.x_values) < self.num_points:
      # 决定前进方向以及沿这个方向前进的距离
      x_direction = choice([1,- 1])
      x_distance = choice([1, 2, 3, 4])
      x_step = x_direction * x_distance

      y_direction = choice([1, -1])
      y_distance = choice([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)

我们创建了一个循环,这个循环不断运行,直到漫步包含所需数量的点。
我们使用choice([1, -1])给x_direction选择一个值,-1代表向左走, 1代表向右走。
choice([0, 1, 2, 3, 4])随机选择0-4之间的整数,告诉python沿指定方向走多远

3. 绘制随机漫步图

import matplotlib.pyplot as plt

from randomwalk import RandomWalk

# 只要程序处于活动状态,就不断地模拟随机漫步
while True:
  # 创建一个RandomWalk实列,并将其包含的点都绘制出来
  rw = RandomWalk()
  rw.fill_walk()

  plt.figure(dpi=128, figsize=(8, 4))

  point_numbers = list(range(rw.num_points))
  plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Reds, edgecolors='none', s=1)
  # 突出起点和终点
  plt.scatter(0, 0, c='green', edgecolors='none', s=100)
  plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)
  plt.show()

  keep_running = input("Make another walk?(y/n):")
  if keep_running == 'n':
    break

创建一个RandomWalk实例,在调用 fill_walk() 方法,我们将随机漫步x、y和次数传递给scatter(),并选择了合适的尺寸。并绘制了起点和终点。

4. 运行结果

python使用matplotlib库生成随机漫步图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的批量下载RFC文档
Mar 10 Python
利用ctypes提高Python的执行速度
Sep 09 Python
详解django三种文件下载方式
Apr 06 Python
tensorflow实现简单的卷积神经网络
May 24 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 #Python
python实现随机漫步算法
Aug 27 #Python
Python3随机漫步生成数据并绘制
Aug 27 #Python
python如何生成各种随机分布图
Aug 27 #Python
python随机数分布random测试
Aug 27 #Python
pycharm安装和首次使用教程
Aug 27 #Python
Windows下PyCharm安装图文教程
Aug 27 #Python
You might like
PHP用户指南-cookies部分
2006/10/09 PHP
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
用JS实现的一个include函数
2007/07/21 Javascript
简单的JS多重继承示例
2008/03/13 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
在Python的Django框架中包装视图函数
2015/07/20 Python
Python 列表理解及使用方法
2017/10/27 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Python实现像awk一样分割字符串
2020/09/15 Python
如何通过python检查文件是否被占用
2020/12/18 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电