用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中的True,False条件判断实例分析
Jan 12 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
python开头的coding设置方法
Aug 08 Python
python3 map函数和filter函数详解
Aug 26 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
python怎么删除缓存文件
Jul 19 Python
python创建文本文件的简单方法
Aug 30 Python
Python装饰器的练习题
Nov 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
javascript 常用功能总结
2012/03/18 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
自我评价范文
2013/12/22 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
干部选拔任用方案
2014/05/26 职场文书
党员个人公开承诺书
2014/08/29 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
公务员年终个人总结
2015/02/12 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
物业管理交接协议书
2016/03/24 职场文书
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android