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使用QRCode模块生成二维码实例详解
Jun 14 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python多线程分块读取文件
Aug 29 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
Python如何重新加载模块
Jul 29 Python
python解包概念及实例
Feb 17 Python
Python与C++中梯度方向直方图的实现
Mar 17 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
js使用心得分享
2015/01/13 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
Python数组条件过滤filter函数使用示例
2014/07/22 Python
代码分析Python地图坐标转换
2018/02/08 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python实现银行管理系统
2019/10/25 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
女性时尚在线:IVRose
2019/02/23 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
商场促销活动总结
2014/07/10 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
公司股份合作协议书
2014/12/07 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
vue实现Toast组件轻提示
2022/04/10 Vue.js
Java实现注册登录跳转
2022/06/16 Java/Android
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL