Python使用matplotlib绘制随机漫步图


Posted in Python onAugust 27, 2018

本文我们来做一个简单的随机漫步数据图,进一步了解matplotlib的使用,

使用Python生成随机漫步数据,再使用matplotlib绘制出来,

随机漫步是这样行走得到的路径: 每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的。
创建一个RandomWalk雷,随机的选择前进的方向,一共有三个属性,一个是存储随机漫步次数的变量,其他两个是列表,分别存储随机漫步经过的每个点的x和y坐标

下面是代码

from random import choice
 
class RandomWalk():
 "一个生成随机漫步数据的表"
 
 def __init__(self, num_points = 5000):
 """初始化随机漫步的属性"""
 self.num_points = num_points
 
 # 所有随机漫步都起始于(0, 0)
 self.x_values = [0]
 self.y_values = [0]
 
 def fill_walk(self):
 """计算随机漫步包含的所有点"""
 
 # 不断漫步,直到列表达到指定的长度
 while len(self.x_values) < self.num_points:
 
  # 决定前进的方向以及沿这个方向前进的距离
  x_direction = choice([-1, 1])
  x_distance = choice([0, 1, 2, 3, 4])
  x_step = x_distance * x_direction 
 
  y_direction = choice([-1, 1])
  y_distance = choice([0, 1, 2, 3, 4])
  y_step = y_distance * y_direction
 
  # 拒绝原地踏步
  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)
from random_walk import RandomWalk
 
# 不断的模拟随机漫步
while True:
 # 创建一个RandomWalk实例,将其包含的点绘制出来
 rw = RandomWalk()
 rw.fill_walk()
 
 
 point_numbers = list(range(rw.num_points))
 plt.scatter(rw.x_values, rw.y_values, c = point_numbers, cmap = plt.cm.Blues, 
 edgecolor = 'none', s = 5)
 
 # 突出起点和终点
 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.axes().get_xaxis().set_visible(False)
 # plt.axes().get_yaxis().set_visible(False)
 
 plt.show()
 
 keep_running = input("Make another walk? (y/n): ")
 if keep_running.lower().startswith('n'):
 break

这是没有颜色渐变和绘制起始和结束点颜色和大小的图片

Python使用matplotlib绘制随机漫步图

这个是给出代码的运行情况,绿色为起始点,红色为终止点,越靠近终止点蓝色越深。

Python使用matplotlib绘制随机漫步图

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

Python 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
Python 正则表达式的高级用法
Dec 04 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
pycharm快捷键汇总
Feb 14 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
Python request中文乱码问题解决方案
Sep 17 Python
Python面向对象之继承和组合用法实例分析
Aug 27 #Python
Python干货:分享Python绘制六种可视化图表
Aug 27 #Python
python使用matplotlib库生成随机漫步图
Aug 27 #Python
Python面向对象之接口、抽象类与多态详解
Aug 27 #Python
python实现随机漫步算法
Aug 27 #Python
Python3随机漫步生成数据并绘制
Aug 27 #Python
python如何生成各种随机分布图
Aug 27 #Python
You might like
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
JS和函数式语言的三特性
2014/03/05 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python中正则的使用指南
2016/12/04 Python
python实现感知器
2017/12/19 Python
使用Python写一个小游戏
2018/04/02 Python
Python实现Dijkstra算法
2018/10/17 Python
代码详解django中数据库设置
2019/01/28 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
秘书专业自荐信范文
2013/12/26 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android