使用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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python编程使用协程并发的优缺点
Sep 20 Python
python 字典的打印实现
Sep 26 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
python爬虫添加请求头代码实例
Dec 28 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
JAVA/JSP学习系列之四
2006/10/09 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
广告艺术设计专业自荐书
2014/07/08 职场文书
500字小学生检讨书
2015/02/19 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
2015党建工作简报
2015/07/21 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
公司周年庆寄语
2019/06/21 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS