Python数据分析之matplotlib(3D绘图)
时间:2022-07-22
本文章向大家介绍Python数据分析之matplotlib(3D绘图),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
绘制三维图形
首先补充一下numpy
中meshgrid
函数的用法。具体含义如下图所示
meshgrid
函数的用法
绘制3D曲面图
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D #导入三维绘制工具箱
fig = plt.figure() # 创建一个绘图对象
ax = Axes3D(fig) # #用这个绘图对象创建一个Axes对象(有3D坐标)
X = np.arange(-4, 4, 0.25) #创建从-4到4,步长为0.25的arange对象
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y) #用这两个arange对象中的可能取值一一映射去扩充为所有可能的取样点
R = np.sqrt(X**2 + Y**2) #函数表示
Z = np.sin(R)
# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
# rstride和cstride表示行列隔多少个取样点建一个小面
# cmap表示绘制曲面的颜色
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()
绘制三维散点图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
data = np.random.randint(0, 255, size=[40, 40, 40])
#data = np.random.randint(0, 255, size=[3,40, 40, 40]) #四维
x, y, z = data[0], data[1], data[2]
#x, y, z = data[0,1], data[0,2], data[0,3] #取值时需要[0,index]
ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程
# 将数据点分成三部分画,在颜色上有区分度
ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点
ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
ax.scatter(x[30:40], y[30:40], z[30:40], c='g')
ax.set_zlabel('Z') # 坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()
参考
Numpy中Meshgrid函数介绍及2种应用场景(https://zhuanlan.zhihu.com/p/29663486)
- 程序员一年写百万行代码是什么体验?这肯定是个Bug
- ChartDirector应用笔记(二)
- ChartDirector应用笔记(一)
- DB Cache
- oracle多用户并发及事务处理
- 数据中心整合会导致更高的云价格吗?
- Linux下oracle开机自启动服务
- KMP算法初探
- oracle数据库性能
- oracle数据结构
- Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
- Python 3.x自定义迭代器对象
- 检测OpenWhisk Web Actions
- Linux平台Qt creator报错:Circular all <- first dependency dropped
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MyBatis XML详解
- Linux三剑客命令之Sed
- Linux运维必会的100道MySql面试题之(四)
- 开源组件ELK日志系统配置与管理
- MySQL集群高可用架构之MHA
- MySQL 主从同步架构中你不知道的“坑”
- Nginx+keepalived高可用配置实战(内附彩蛋)
- MySQL 主从同步架构中你不知道的“坑”(完结篇)
- 分布式文件系统FastDFS详解
- 高效、易用、功能强大的 api 管理平台(内附彩蛋)
- Docker容器技术入门(一)
- 【容器技术】Docker容器技术入门(二)
- Mysql+Mycat实现数据库主从同步与读写分离
- 性能优化|Tomcat 服务优化
- zookeeper技术介绍