使用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 多进程和数据传递的理解
Oct 09 Python
Python进程间通信之共享内存详解
Oct 30 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
python使用zip将list转为json的方法
Dec 31 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
python多线程方法详解
Jan 18 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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
极典R601SW收音机
2021/03/02 无线电
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP微信API接口类
2016/08/22 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
基于python生成器封装的协程类
2019/03/20 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python manage.py runserver流程解析
2019/11/08 Python
Python: 传递列表副本方式
2019/12/19 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
详解python tkinter 图片插入问题
2020/09/03 Python
python中最小二乘法详细讲解
2021/02/19 Python
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
教师竞聘上岗演讲稿
2014/09/03 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
2016小学新学期寄语
2015/12/04 职场文书
运动会主持人开幕词
2016/03/04 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server