使用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 相关文章推荐
python3中set(集合)的语法总结分享
Mar 24 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python 互换字典的键值对实例
Feb 12 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
python topk()函数求最大和最小值实例
Apr 02 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
Python自动化xpath实现自动抢票抢货
Sep 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/06/04 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python实现通讯录功能
2018/02/22 Python
python 实现二维列表转置
2019/12/02 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
文明市民先进事迹
2014/05/15 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL