使用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实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
python基础教程项目二之画幅好画
Apr 02 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
django和vue实现数据交互的方法
Aug 21 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
详解Python生成器和基于生成器的协程
Jun 03 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应用JSON技巧讲解
2013/02/03 PHP
php的hash算法介绍
2014/02/13 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
js闭包实例汇总
2014/11/09 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
Python 关于反射和类的特殊成员方法
2017/09/14 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
python修改txt文件中的某一项方法
2018/12/29 Python
Python中函数的返回值示例浅析
2019/08/28 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
python获取整个网页源码的方法
2020/08/03 Python
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
经理秘书岗位职责
2013/11/14 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
校庆团日活动总结
2014/08/28 职场文书
死亡证明书样本说明
2014/10/18 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
故意杀人案辩护词
2015/05/21 职场文书
解析Java异步之call future
2021/06/14 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript