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使用str &amp; repr转换字符串
Oct 13 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
Nov 02 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
python简易远程控制单线程版
Jun 20 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
对python生成业务报表的实例详解
Feb 03 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
python 利用zmail库发送邮件
Sep 11 Python
Python中logging日志的四个等级和使用
Nov 17 Python
使用Python拟合函数曲线
Apr 14 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
jQuery事件用法实例汇总
2014/08/29 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
python实现闹钟定时播放音乐功能
2018/01/25 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
基于Python实现粒子滤波效果
2020/12/01 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
英语生日邀请函
2014/01/23 职场文书
国庆横幅标语
2014/10/08 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
工伤事故证明
2014/10/20 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript