求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
追随技术信仰

随时听讲座
每天看新闻
 
 
Matplotlib教程
1.数据可视化是什么
2.Matplotlib是什么
3.Matplotlib下载和安装
4.Matplotlib.pyplot接口汇总
5.第一个Matplotlib绘图程序
6.PyLab绘制曲线图
7.Matplotlib figure图形对象
8.Matplotlib axes类使用详解
9.Matplotlib subplot()函数用法详解
10.Matplotlib subplots()函数详解
11.Matplotlib subplot2grid()函数详解
12.Matplotlib设置网格格式
13.Matplotlib设置坐标轴格式
14.Matplotlib设置坐标轴范围
15.Matplotlib设置刻度和标签
16.Matplotlib中文乱码解决方案
17.Matplotlib双轴图
18.Matplotlib设置刻度和标签
19.Matplotlib柱状图
20.Matplotlib直方图
21.Matplotlib饼状图
22.Matplotlib折线图
23.Python Matplotlib散点图
24.Matplotlib等高线图
25.Matplotlib振动图
26.Matplotlib箱型图
27.Matplotlib提琴图
28.Python Matplotlib 3D绘图详解
29.Matplotlib绘制文本
30.Matplotlib数学表达式
31.Matplotlib image图像处理
32.Matplotlib转换对象
 

 
目录
 
Python Matplotlib 3D绘图详解(汇总)
来源:C语言中文网
122 次浏览
5次  

最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 mpl_toolkits.mplot3d ,通过调用该程序包一些接口可以绘制 3D散点图、3D曲面图、3D线框图等

mpl_toolkits 是 Matplotlib 的绘图工具包。

第一个三维绘图程序

下面编写第一个三维绘图程序。

首先创建一个三维绘图区域, plt.axes() 函数提供了一个参数 projection ,将其参数值设置为 "3d"。如下所示:

  1. #导入三维工具包mplot3d
  2. from mpl_toolkits import mplot3d
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. fig = plt.figure()
  6. #创建3d绘图区域
  7. ax = plt.axes(projection='3d')

有了三维绘图区域,接下来就要构建 3d 图像,如下所示:

  1. #从三个维度构建
  2. z = np.linspace(0, 1, 100)
  3. x = z * np.sin(20 * z)
  4. y = z * np.cos(20 * z)

最后调用 plot3D() 方法绘制 3d 图形,代码如下:

  1. #调用 ax.plot3D创建三维线图
  2. ax.plot3D(x, y, z, 'gray')
  3. ax.set_title('3D line plot')
  4. plt.show()

完整程序如下所示:

  1. from mpl_toolkits import mplot3d
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. fig = plt.figure()
  5. #创建3d绘图区域
  6. ax = plt.axes(projection='3d')
  7. #从三个维度构建
  8. z = np.linspace(0, 1, 100)
  9. x = z * np.sin(20 * z)
  10. y = z * np.cos(20 * z)
  11. #调用 ax.plot3D创建三维线图
  12. ax.plot3D(x, y, z, 'gray')
  13. ax.set_title('3D line plot')
  14. plt.show()

输出结果如下所示:

图1:三维线图(3D Line)

上述代码中的 ax.plot3D() 函数可以绘制各种三维图形,这些三维图都要根据 (x,y,z) 三元组类来创建。

3D散点图

通过 ax.scatter3D() 函数可以绘制 3D 散点图,示例代码如下:

  1. from mpl_toolkits import mplot3d
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. fig = plt.figure()
  5. #创建绘图区域
  6. ax = plt.axes(projection='3d')
  7. #构建xyz
  8. z = np.linspace(0, 1, 100)
  9. x = z * np.sin(20 * z)
  10. y = z * np.cos(20 * z)
  11. c = x + y
  12. ax.scatter3D(x, y, z, c=c)
  13. ax.set_title('3d Scatter plot')
  14. plt.show()

输出结果如下所示:

图2:Matplotlib 3D绘图

 

3D等高线图

ax.contour3D() 可以用来创建三维等高线图,该函数要求输入数据均采用二维网格式的矩阵坐标。同时,它可以在每个网格点 (x,y) 处计算出一个 z 值。

以下示例展示了如何绘制三维正弦等高线图。代码如下:

  1. from mpl_toolkits import mplot3d
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. def f(x, y):
  5. return np.sin(np.sqrt(x ** 2 + y ** 2))
  6. #构建x、y数据
  7. x = np.linspace(-6, 6, 30)
  8. y = np.linspace(-6, 6, 30)
  9. #将数据网格化处理
  10. X, Y = np.meshgrid(x, y)
  11. Z = f(X, Y)
  12. fig = plt.figure()
  13. ax = plt.axes(projection='3d')
  14. #50表示在z轴方向等高线的高度层级,binary颜色从白色变成黑色
  15. ax.contour3D(X, Y, Z, 50, cmap='binary')
  16. ax.set_xlabel('x')
  17. ax.set_ylabel('y')
  18. ax.set_zlabel('z')
  19. ax.set_title('3D contour')
  20. plt.show()

输出结果如下所示:

图3:绘制三维轮廓图

3D线框图

线框图同样要采用二维网格形式的数据,与绘制等高线图类似。

线框图可以将数据投影到指定的三维表面上,并输出可视化程度较高的三维效果图。通过 plot_wireframe() 能够绘制 3D 线框图。代码如下:

  1. from mpl_toolkits import mplot3d
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #要绘制函数图像
  5. def f(x, y):
  6. return np.sin(np.sqrt(x ** 2 + y ** 2))
  7. #准备x,y数据
  8. x = np.linspace(-6, 6, 30)
  9. y = np.linspace(-6, 6, 30)
  10. #生成x、y网格化数据
  11. X, Y = np.meshgrid(x, y)
  12. #准备z值
  13. Z = f(X, Y)
  14. #绘制图像
  15. fig = plt.figure()
  16. ax = plt.axes(projection='3d')
  17. #调用绘制线框图的函数plot_wireframe()
  18. ax.plot_wireframe(X, Y, Z, color='black')
  19. ax.set_title('wireframe')
  20. plt.show()

输出结果如下:

图4:Matplotlib绘制线框图

3D曲面图

曲面图表示一个指定的因变量 y 与两个自变量 x 和 z 之间的函数关系。

3D 曲面图是一个三维图形,它非常类似于线框图。不同之处在于,线框图的每个面都由多边形填充而成。Matplotlib 提供的 plot_surface() 函数可以绘制 3D 曲面图,该函数需要接受三个参数值 x,y 和 z 。示例代码如下:

  1. from mpl_toolkits import mplot3d
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #求向量积(outer()方法又称外积)
  5. x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
  6. #矩阵转置
  7. y = x.copy().T
  8. #数据z
  9. z = np.cos(x ** 2 + y ** 2)
  10. #绘制曲面图
  11. fig = plt.figure()
  12. ax = plt.axes(projection='3d')
  13. 调用plot_surface()函数
  14. ax.plot_surface(x, y, z,cmap='viridis', edgecolor='none')
  15. ax.set_title('Surface plot')
  16. plt.show()

输出结果如下所示:

图5:Matplotlib绘制曲面图

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



122 次浏览
5次