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使用代理抓取网站图片(多线程)
Mar 14 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
Python subprocess库的使用详解
Oct 26 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
Django数据库操作之save与update的使用
Apr 01 Python
python实现文字版扫雷
Apr 24 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
Python操作Excel的学习笔记
Feb 18 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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操作数组相关函数
2011/02/03 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
浅谈php提交form表单
2015/07/01 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
Jquery中获取iframe的代码
2011/01/11 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python中的itertools的使用详解
2020/01/13 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
初中家长意见
2015/06/03 职场文书
水浒传读书笔记
2015/06/25 职场文书