用Python绘制漫步图实例讲解


Posted in Python onFebruary 26, 2020

我们首先来看下代码:

import matplotlib.pyplot as plt
from random import choice
class RandomWalk():
 def __init__(self,num_points=5000):
  self.num_points=num_points
  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_direction*x_distance
   y_direction=choice([1,-1])
   y_distance=choice([0,1,2,3,4])
   y_step=y_direction*y_distance
   if x_step==0 and y_step==0:
    continue
   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)
rw=RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values,rw.y_values,s=1)
plt.show()

绘制出的图如下所示:

用Python绘制漫步图实例讲解

这段代码绘制了5000个数据点,这些点的分布完全是随机的。每次运行代码都会有不同的走向。

实例扩展

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_direction * x_distance
  
  y_direction = choice([1,-1])
  y_distance = choice([0,1,2,3,4])
  y_step = y_direction * x_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)
import matplotlib.pyplot as plt 
  
from random_walk import RandomWalk
  
# 创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk(50000)
rw.fill_walk()
  
# 设置绘图窗口的尺寸
plt.figure(dpi=80,figsize=(10,6))
  
# 设置点按先后顺序增加颜色深度
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=1)
  
# 突出起点和终点,起点设置为绿色,终点设置为红色
plt.scatter(0,0,c='green',edgecolor='none',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolor='none',s=100)
  
# 隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
  
plt.show()

第二个实例内容差不多,是用的PY3.5,大家可以本地测试下。

到此这篇关于用Python绘制漫步图实例讲解的文章就介绍到这了,更多相关使用Python绘制漫步图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
详解python中的文件与目录操作
Jul 11 Python
python中的字典操作及字典函数
Jan 03 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
pow在python中的含义及用法
Jul 11 Python
python银行系统实现源码
Oct 25 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
Python办公自动化之Excel(中)
May 24 Python
Django单元测试中Fixtures的使用方法
Feb 26 #Python
python 解压、复制、删除 文件的实例代码
Feb 26 #Python
Python递归调用实现数字累加的代码
Feb 25 #Python
python烟花效果的代码实例
Feb 25 #Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 #Python
使用python绘制cdf的多种实现方法
Feb 25 #Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 #Python
You might like
用PHP实现文件上传二法
2006/10/09 PHP
PHP 彩色文字实现代码
2009/06/29 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
基于python实现名片管理系统
2018/11/30 Python
pycharm配置git(图文教程)
2019/08/16 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
北大研究生linux应用求职信
2013/10/29 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
数学教研活动总结
2014/07/02 职场文书
弄虚作假心得体会
2014/09/10 职场文书
优秀志愿者感言
2015/08/01 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Nginx速查手册及常见问题
2022/04/07 Servers