用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中threading模块join函数用法实例分析
Jun 04 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
python多进程下的生产者和消费者模型
May 07 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python模块之re正则表达式详解
2017/02/03 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
上班上网检讨书
2014/01/29 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
某某同志考察材料
2014/05/28 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
公司证明怎么写
2014/09/22 职场文书
入党自荐书范文
2015/03/05 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
python删除csv文件的行列
2021/04/06 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript