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是编译运行的验证方法
Jan 30 Python
Python中编写ORM框架的入门指引
Apr 29 Python
Python heapq使用详解及实例代码
Jan 25 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
Python元组知识点总结
Feb 18 Python
python批量处理文件或文件夹
Jul 28 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
python 装饰器的使用示例
Oct 10 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
pandas中DataFrame检测重复值的实现
May 26 Python
浅谈Python数学建模之整数规划
Jun 23 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编程获取各个时间段具体时间的方法
2017/05/26 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
个人简历自我鉴定
2013/10/11 职场文书
物业保安主管岗位职责
2013/12/25 职场文书
战友聚会邀请函
2014/01/18 职场文书
有关打架的检讨书
2014/01/25 职场文书
图书室标语
2014/06/21 职场文书
工作说明书格式
2014/07/29 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android