用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 相关文章推荐
Djang中静态文件配置方法
Jul 30 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
Python中的函数作用域
May 07 Python
python3连接MySQL数据库实例详解
May 24 Python
使用pandas读取文件的实现
Jul 31 Python
python输出决策树图形的例子
Aug 09 Python
pytorch 模型可视化的例子
Aug 17 Python
python+pygame实现坦克大战
Sep 10 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
django 取消csrf限制的实例
Mar 13 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
win10下python3.8的PIL库安装过程
Jun 08 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利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
js实现网页随机验证码
2020/10/19 Javascript
python实现简单温度转换的方法
2015/03/13 Python
python+os根据文件名自动生成文本
2019/03/21 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Python实现点云投影到平面显示
2020/01/18 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
护理专业的自荐信
2013/10/22 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL