用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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
python装饰器使用方法实例
Nov 21 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
快速了解Python相对导入
Jan 12 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
python读写配置文件操作示例
Jul 03 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
python将数据插入数据库的代码分享
Aug 16 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
上传多个文件的PHP脚本
2006/11/26 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
js实现打字小游戏
2019/12/17 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
班组建设经验交流材料
2014/05/12 职场文书
党建工作整改措施
2014/10/28 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫