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中的文件I/O操作
May 24 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
Python类属性的延迟计算
Oct 22 Python
Python 登录网站详解及实例
Apr 11 Python
快速了解Python相对导入
Jan 12 Python
Python实现基于POS算法的区块链
Aug 07 Python
python爬取内容存入Excel实例
Feb 20 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python 正则模块详情
Nov 02 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
php 文件缓存函数
2011/10/08 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python调用staf自动化框架的方法
2018/12/26 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
董事长秘书职责
2014/01/31 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
护校行动方案
2014/05/31 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
Python开发五子棋小游戏
2022/05/02 Python