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 相关文章推荐
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python实现2048小游戏
Mar 30 Python
python对html代码进行escape编码的方法
May 04 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
python使用str &amp; repr转换字符串
Oct 13 Python
机器学习python实战之手写数字识别
Nov 01 Python
python学生管理系统代码实现
Apr 05 Python
Python安装OpenCV的示例代码
Mar 05 Python
django 模型字段设置默认值代码
Jul 15 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
利用Python实现斐波那契数列的方法实例
Jul 26 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
PHP4.04简明安装
2006/10/09 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
微信API接口大全
2015/04/15 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python实现扫描日志关键字的示例
2018/04/28 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python二元表达式用法
2019/12/04 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
python解包概念及实例
2021/02/17 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
幼儿园实习自我鉴定
2013/12/15 职场文书
婚礼主持词
2014/03/13 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
博士导师推荐信
2015/03/25 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
Python四款GUI图形界面库介绍
2022/06/05 Python