使用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 相关文章推荐
bpython 功能强大的Python shell
Feb 16 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
python处理xml文件的方法小结
May 02 Python
python生成圆形图片的方法
Mar 25 Python
几种实用的pythonic语法实例代码
Feb 24 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
Python实现的凯撒密码算法示例
Apr 12 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
python是否适合网页编程详解
Oct 04 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 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二维数组用键名分组相加实例函数
2013/11/06 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jquery创建div 实现代码
2009/04/27 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
python实现连接mongodb的方法
2015/05/08 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python决策树之CART分类回归树详解
2017/12/20 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python如何实现转换URL详解
2019/07/02 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
集团公司人力资源部岗位职责
2014/01/03 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
出售房屋协议书范本
2014/10/06 职场文书
行政助理岗位职责
2015/02/10 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
Golang 并发编程 SingleFlight模式
2022/04/26 Golang