用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学习手册中的python多态示例代码
Jan 21 Python
Python类的专用方法实例分析
Jan 09 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
python实现转圈打印矩阵
Mar 02 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python 多维高斯分布数据生成方式
Dec 09 Python
python palywright库基本使用
Jan 21 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 Python
Python学习开发之图形用户界面详解
Aug 23 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
页面使用密码保护代码
2013/04/10 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
Python深入学习之闭包
2014/08/31 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python实现周期方波信号频谱图
2018/07/21 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
学院领导推荐信
2013/10/30 职场文书
校园十大歌手策划书
2014/02/01 职场文书
给老师的一封建议书
2014/03/13 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB