使用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获取GY-85九轴模块信息示例
Dec 05 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
python实现数独算法实例
Jun 09 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
python/golang 删除链表中的元素
Sep 14 Python
python 如何上传包到pypi
Dec 24 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 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中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
解析link_mysql的php版
2013/06/30 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python利用微信公众号实现报警功能
2018/06/10 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
酒店个人求职信范文
2014/01/25 职场文书
《口技》教学反思
2014/02/21 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
2014财务年终工作总结
2014/12/08 职场文书
入党函调证明材料
2015/06/19 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis