使用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中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
python3中bytes和string之间的互相转换
Feb 09 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python队列queue模块详解
Apr 27 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
python+opencv实现阈值分割
Dec 26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python处理document文档保留原样式
Sep 23 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 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
中国的第一台收音机
2021/03/01 无线电
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
python根据出生日期返回年龄的方法
2015/03/26 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python实现推箱子游戏
2020/03/25 Python
Python 线程池用法简单示例
2019/10/02 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
高级技校毕业生自荐信
2013/11/18 职场文书
国家励志奖学金获奖感言
2014/01/09 职场文书
女方回门宴答谢词
2014/01/14 职场文书
转让协议书范本
2014/09/13 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
Python访问Redis的详细操作
2021/06/26 Python
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫