用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中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python实现的Excel文件读写类
Jul 30 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Random 在 Python 中的使用方法
Aug 09 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
Django model select的多种用法详解
Jul 16 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
python数值基础知识浅析
Nov 19 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python中for后接else的语法使用
May 18 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
python远程登录代码
2008/04/29 Python
python根据距离和时长计算配速示例
2014/02/16 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python如何从键盘获取输入实例
2020/06/18 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
2014年英语教师工作总结
2014/12/03 职场文书
技术员岗位职责
2015/02/04 职场文书
2015年班组长工作总结
2015/04/10 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js