使用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遍历指定文件及文件夹的方法
May 09 Python
Python实现图像几何变换
Jul 06 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
python制作朋友圈九宫格图片
Nov 03 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
Python发送手机动态验证码代码实例
Feb 28 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
如何使用Django Admin管理后台导入CSV
Nov 06 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 压缩文件夹的类代码
2009/11/05 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中的推导式使用详解
2015/06/03 Python
python实现SMTP邮件发送功能
2020/06/16 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
工作时间上网检讨书
2014/02/03 职场文书
求职信怎么写范文
2014/05/26 职场文书
人民调解员培训方案
2014/06/05 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS