用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网络编程之读取网站根目录实例
Sep 30 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
Python检测网站链接是否已存在
Apr 07 Python
Python中模块string.py详解
Mar 12 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Python 实现数据结构中的的栈队列
May 16 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
python取均匀不重复的随机数方式
Nov 27 Python
详解Flask前后端分离项目案例
Jul 24 Python
opencv实现图像几何变换
Mar 24 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实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
零基础php编程好学吗
2019/10/11 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
Python中删除文件的程序代码
2011/03/13 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python实现简单socket通信的方法
2016/04/19 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python删除n行后的其他行方法
2019/01/28 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
python中round函数保留两位小数的方法
2020/12/04 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
Hotels.com印度:酒店预订
2019/05/11 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
新闻工作者先进事迹
2014/05/26 职场文书
施工现场安全管理制度
2015/08/05 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js