matplotlib 三维图表绘制方法简介


Posted in Python onSeptember 20, 2020

1. python三维图表绘制方法简介

python三维图表的绘制算是二维图表的一个进阶版本,本质上和二维图表的绘制并无差别,唯一的区别在于使用的库略有差异。

相较于二维图表使用的pyplot库,三维图表的绘制使用的是Axes3D库。

库引入语句为:

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

上下的操作就和二维图表绘制大差不差了,首先定义三维画布,然后向里面绘制三维图表,最后打印出结果即可。

下面,我们通过一些实例来进行说明。

2. 实例说明

 1. 三维曲线图绘制

首先,我们来看一下三维曲线图的绘制。

三维曲线图的绘制和二维曲线图的绘制方法极其相似,只是我们需要做以下两点修改:

  • 将画布修改为三维坐标系;
  • 传参时同时传入x、y、z三个维度的坐标信号。

另外,plot函数需要修改三维曲线绘制的Axes3D.plot函数。

给出代码样例如下:

import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

theta = numpy.linspace(0, 3.14*4, 200)
r = numpy.linspace(0, 1, 200)
x = r * numpy.cos(theta)
y = r * numpy.sin(theta)
z = numpy.linspace(0, 2, 200)

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d')
ax1.plot(x, y, z)
plt.show()

运行即可得到一张三维曲线图。

matplotlib 三维图表绘制方法简介

2. 三维散点图绘制

下面,我们来看一下三维空间中的散点图绘制方法。

其方法其实挺简单的,就是先绘制x、y面的网点坐标,计算相应的z轴高度,而后创建一张三维图,然后通过Axes3D.scatter函数进行散点图绘制即可。

我们给出具体的代码样例如下:

import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = numpy.linspace(-2, 2, 10)
y = numpy.linspace(-2, 2, 10)
xx, yy = numpy.meshgrid(x, y)
z = xx ** 2 - yy ** 2

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d') # 创建三维坐标轴
ax1.scatter(xx, yy, z) # 绘制三维散点图
plt.show()

运行即可得到三维散点图。

matplotlib 三维图表绘制方法简介

3. 三维曲面图绘制

三维曲面图的绘制与三维极其类似,只需要将Axes3D.scatter函数替换为Axes3D.plot_surface函数即可。

我们就不再多做解释了,直接给出代码样例如下:

import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = numpy.linspace(-2, 2, 10)
y = numpy.linspace(-2, 2, 10)
xx, yy = numpy.meshgrid(x, y)
print(xx.shape, yy.shape)
z = xx ** 2 - yy ** 2

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d') # 创建三维坐标轴
ax1.plot_surface(xx, yy, z) # 绘制三维曲面图
plt.show()

运行即可得到三维曲面图。

matplotlib 三维图表绘制方法简介

3. 参考链接

 https://matplotlib.org/tutorials/toolkits/mplot3d.html

Python三维绘图?Matplotlib

到此这篇关于matplotlib 三维图表绘制方法简介的文章就介绍到这了,更多相关matplotlib 三维图表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
python应用程序在windows下不出现cmd窗口的办法
May 29 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
matplotlib作图添加表格实例代码
Jan 23 Python
python 美化输出信息的实例
Oct 15 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
Python PO设计模式的具体使用
Aug 16 Python
Django 自动生成api接口文档教程
Nov 19 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
python opencv肤色检测的实现示例
Dec 21 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 #Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 #Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 #Python
python中random.randint和random.randrange的区别详解
Sep 20 #Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 #Python
Python Pillow(PIL)库的用法详解
Sep 19 #Python
Python自动化xpath实现自动抢票抢货
Sep 19 #Python
You might like
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
js验证账户名是否重复
2020/05/26 Javascript
python分析nignx访问日志脚本分享
2015/02/26 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
简历中求职的个人自我评价
2013/12/03 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
化工实习心得体会
2014/09/09 职场文书
离婚协议书怎么写
2015/01/26 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
JavaScript 对象创建的3种方法
2021/11/17 Javascript
MySQL主从切换的超详细步骤
2022/06/28 MySQL