使用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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
python中Flask框架简单入门实例
Mar 21 Python
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
tensorflow实现softma识别MNIST
Mar 12 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
Python根据字典的值查询出对应的键的方法
Sep 30 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
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php异常处理方法实例汇总
2015/06/24 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
销售会计工作职责
2013/12/02 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
战友聚会策划方案
2014/06/13 职场文书
清洁工个人工作总结
2015/03/05 职场文书