用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的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Python pymongo模块常用操作分析
Sep 01 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python lambda的使用详解
Feb 26 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
vue+element tabs选项卡分页效果
2020/06/29 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python中单、双下划线的区别总结
2017/12/01 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
为什么使用接口?
2014/08/13 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
贷款承诺书范文
2014/05/19 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS