[Python系列-22]:Python之人工智能 - 基本工具 - 6- 绘制二元函数的三维曲面图
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python系列-22]:Python之人工智能 - 基本工具 - 6- 绘制二元函数的三维曲面图相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenB
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119859493
目录
2.3 构建三维坐标系子图axes对象,并关联figure对象
3.3源代码示例3:使用matplotlib库创建三维坐标系对象
第1章 matplotlib原理与绘图的基本方式
1.1 Matplotlib构图的两种方式:
(1)隐式构图
当需要绘制一张简单的图形时,可以使用隐式构图,比如:
- 只包含一个默认的坐标系子图
- 子图是默认的二维直角坐标系
详细请参考:[Python系列-9]:Python之人工智能 - 基本工具 -3- 函数可视化工具matplotlib原理与隐式绘图基本方法
https://blog.csdn.net/HiWangWenBing/article/details/119255863
(2)显式构图:
当需要构建一张复杂的图形的时候,就需要进行显式的方式进行构图,比如:
- 构建包含多张子图的图形。
- 构建一个三维图形。
本文介绍的是:通过显式的方式构建三维图形。
第2章 构建三维、曲面图形的基本步骤
步骤1:构建三维数据源
步骤1:构建画布figure对象
步骤2:构建三维坐标系子图axes对象,并关联figure对象
步骤3:在三维坐标系中绘制特定数据的图形
2.1 构建三维数据源
构建符合要求的三维数据是绘制三维曲面图形重要的一个环节!!!
# 二元2次非线性函数
# y=f(x,y) = x^2 + y^2 + 1
def f(x,y):
return(1.0*x**2 + 1.0*y**2 + 1)
# y = x^2 + y2 + 1
x = np.linspace(0,13,10) #x坐标轴数据序列
y = np.linspace(0,13,10) #y坐标轴数据序列
xd,yd = np.meshgrid(x,y) #空间的点序列转换成网格点,这是关键!!!
zd = f(xd,yd) #生成z轴的网格数据
2.2 构建画布figure对象的方法
fig=plt.figure()
2.3 构建三维坐标系子图axes对象,并关联figure对象
(1)利用matplotlib自带的库构建
from matplotlib import pyplot as plt
fig=plt.figure()
ax1 = plt.axes(projection='3d') #创建三维坐标系对象,并自动关联到fig对象
- 通过plt.axes()函数创建三维坐标系axes的对象ax1.
- 通过plt.axes()的参数projection='3d'指明是三维坐标系
- 通过plt名称直接关联到默认的figure
(2)利用专用的3D库mpl_toolkits.mplot3d构建
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax2 = Axes3D(fig) #创建三维坐标系对象,并自动关联到fig对象。
- 通过Axes3D()函数创建三维坐标系axes的对象ax2
- 通过Axes3D函数名,指明创建三维坐标系
- 通过Axes3D函数名的参数fig,把坐标系关联到figure对象上
2.4 在三维坐标系中绘制特定数据的图形
三维图形包括两大类:
(1)三维空间的曲线图:由三维空间中的点构成的图形
参考: [Python系列-21]:Python之人工智能 - 基本工具 - 5- 绘制二元函数的三维曲线或散点图
https://mp.csdn.net/mp_blog/creation/editor/119859463
(2)三维空间的曲面图:由三维空间中的面构成的图形
ax1.plot_surface (xd,yd,zd,rstride=1,cstride=1,cmap='rainbow')
第3章 Python源代码示例
3.1 源代码示例1:二维线性数据示意图
# 二维线性数据图示
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(-10, 10, 2)
y = np.arange(-10, 10, 2) #X,Y的范围
figure = plt.figure()
plt.plot(x,y)
输出:
3.2 源代码示例2:三维网格数据示意图
from matplotlib import pyplot as plt
import numpy as np
# 二元2次非线性函数
# y=f(x,y) = x^2 + xy + y^2 + 1
def f(x,y):
return(1.0*x**2 + x*y + 1.0*y**2 + 1)
x = np.arange(-10, 10, 2)
y = np.arange(-10, 10, 2) #X,Y的范围
xd,yd = np.meshgrid(x,y) #空间的点序列转换成网格点
figure = plt.figure()
plt.plot(xd,yd)
输出 :
3.3源代码示例3:使用matplotlib库创建三维坐标系对象
# 绘制曲面图
from matplotlib import pyplot as plt
import numpy as np
# 二元2次非线性函数
# y=f(x,y) = x^2 + y^2 + 1
def f(x,y):
return(1.0*x**2 + 1.0*y**2 + 1)
x = np.arange(-10, 10, 2)
y = np.arange(-10, 10, 2) #X,Y的范围
xd,yd = np.meshgrid(x,y) #空间的点序列转换成网格点
zd = f(xd,yd) #生成z轴的网格数据
figure = plt.figure()
ax1 = plt.axes(projection='3d') #创建三维坐标系
ax1.plot_surface(xd,yd,zd,rstride=1,cstride=1,cmap='rainbow')
#plt.show()#展示图片
输出:
3.4 源代码示例4:
# 绘制曲面图
from matplotlib import pyplot as plt
import numpy as np
xd = np.arange(-10, 10, 0.1)
yd = np.arange(-10, 10, 0.1) #X,Y的范围
xd,yd = np.meshgrid(xd,yd) #绘制网格
zd = (np.sin(xd) * np.sin(yd))/(xd*yd) #f(x,y)=(sin(x)*sin(y))/(x*y),注意括号
figure = plt.figure()
ax1 = plt.axes(projection='3d') #创建三维坐标系
ax1.plot_surface(xd,yd,zd,rstride=1,cstride=1,cmap='rainbow')
#plt.show()#展示图片
输出:
作者主页(文火冰糖的硅基坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119859493
以上是关于[Python系列-22]:Python之人工智能 - 基本工具 - 6- 绘制二元函数的三维曲面图的主要内容,如果未能解决你的问题,请参考以下文章
[Python系列-4]:Python之人工智能 - 基本语法-1- 变量与运算
[Python系列-7]:Python之人工智能 - 基本工具 -1- Time库
[Python系列-9]:Python之人工智能 - 基本工具 -3- 函数可视化工具matplotlib
[Python系列-8]:Python之人工智能 - 基本工具 -2- 随机数生成库