使用python绘制3维正态分布图的方法


Posted in Python onDecember 29, 2018

今天使用python画了几个好玩的3D展示图,现在分享给大家。

先贴上图片

使用python绘制3维正态分布图的方法

使用python绘制3维正态分布图的方法

使用python绘制3维正态分布图的方法

使用的python工具包为:

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

在贴代码之前,有必要从整体上了解这些图是如何画出来的。可以把上面每一个3D图片理解成一个长方体。输入数据是三维的,x轴y轴和z轴。在第三个图片里面有x、y和z坐标的标识。在第三张图片中,我们可以理解为,z是随着x和y变化的函数。就像一个人在山丘地区走动一样,其中x和y表示的是方向,z表示的这个人在上坡还是下坡。第二张图片的中间那个,其实是一个3维的正态分布图。

具体的公式为:

使用python绘制3维正态分布图的方法

上面的是2维的,即只有x和y,如果是三维的话,需要一点变形,只需要在上面的公式基础之上把exp()里面改变为:exp(-((x-u)^2 + (y - u)^2)/(2q^2)), 这里的u表示平均值,q表示标准差。这样变化之后,z = f(x, y)。这就是z值的公式了,表示的是z值随着x和y值的变化而变化的函数。

下面贴一下代码

这是第二张图片的代码。

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
len = 8;
step = 0.4;


def build_layer(z_value):
 x = np.arange(-len, len, step);
 y = np.arange(-len, len, step);
 z1 = np.full(x.size, z_value/2)
 z2 = np.full(x.size, z_value/2)
 z1, z2 = np.meshgrid(z1, z2)
 z = z1 + z2;

 x, y = np.meshgrid(x, y)
 return (x, y, z);

def build_gaussian_layer(mean, standard_deviation):
 x = np.arange(-len, len, step);
 y = np.arange(-len, len, step);
 x, y = np.meshgrid(x, y);
 z = np.exp(-((y-mean)**2 + (x - mean)**2)/(2*(standard_deviation**2)))
 z = z/(np.sqrt(2*np.pi)*standard_deviation);
 return (x, y, z);

# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
x1, y1, z1 = build_layer(0.2);
ax.plot_surface(x1, y1, z1, rstride=1, cstride=1, color='green')

x5, y5, z5 = build_layer(0.15);
ax.plot_surface(x5, y5, z5, rstride=1, cstride=1, color='pink')

# x2, y2, z2 = build_layer(-0.26);
# ax.plot_surface(x2, y2, z2, rstride=1, cstride=1, color='yellow')
#
# x6, y6, z6 = build_layer(-0.22);
# ax.plot_surface(x6, y6, z6, rstride=1, cstride=1, color='pink')

# x4, y4, z4 = build_layer(0);
# ax.plot_surface(x4, y4, z4, rstride=1, cstride=1, color='purple')

x3, y3, z3 = build_gaussian_layer(0, 1)
ax.plot_surface(x3, y3, z3, rstride=1, cstride=1, cmap='rainbow')
plt.show()


这是第三张图片的代码

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

x, y = np.mgrid[-1:1:20j, -1:1:20j]
z = x * np.exp(-x ** 2 - y ** 2)

ax = plt.subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=2, cstride=1, cmap=plt.cm.coolwarm, alpha=0.8)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

plt.show()

以上这篇使用python绘制3维正态分布图的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
介绍Python中内置的itertools模块
Apr 29 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python中max函数用法实例分析
Jul 17 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python微信库:itchat的用法详解
Aug 14 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Python3如何判断三角形的类型
Apr 12 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
Python turtle编写简单的球类小游戏
Mar 31 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 #Python
对python指数、幂数拟合curve_fit详解
Dec 29 #Python
对python实现二维函数高次拟合的示例详解
Dec 29 #Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 #Python
Python 做曲线拟合和求积分的方法
Dec 29 #Python
python 画三维图像 曲面图和散点图的示例
Dec 29 #Python
python实现三维拟合的方法
Dec 29 #Python
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python入门篇之对象类型
2014/10/17 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
学习委员自我鉴定
2014/01/13 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python