三维图像的绘制
程序员文章站
2022-07-13 09:33:39
...
这一小节,我们来绘制三维图像。二维图像可以表示两个变量在空间中的分布,三维图像可以表示三个变量在空间中的分布。通过对三维数据进行可视化,使得我们可以更加直观的理解数据。
在中学的时候,我们接触的函数基本都是一元二次函数,如
它的几何表达如下图所示:
到了大学的时候,我们接触到函数就变得更加复杂了,如二元二次函数,甚至有更加复杂(维度更高)的函数。
上述函数表达式的几何图如下图所示:
三维图像的绘制过程:
别的不多说了,先绘制一个三维曲面,直接上代码。
import numpy as np
import matplotlib.pyplot as plt
#绘制三维图形必须导入的工具包
from mpl_toolkits.mplot3d import Axes3D
#创建三维数据
xx = np.arange(-5,5,0.1)
yy = np.arange(-5,5,0.1)
#使用np.meshgrid()方法,将X,Y转化二维平面数据。此处可以使用print(X)观察X,Y的真实面貌。
X,Y = np.meshgrid(xx,yy)
Z = np.sin(X) + np.cos(Y)
#开始绘制三维图形
#创建三维图形的窗口(布局)
fig = plt.figure(figsize = (5,5))
ax1 = Axes3D(fig)#还可以使用plt.axes(projection = '3d),两者的效果是一样的。
#使用plot_surface()绘制三维曲面图
ax1.plot_surface(X,Y,Z,cmap = 'rainbow')
#绘制等高线图
#参数说明:zdir:投影的方向,可以指定为x,y或z;
#offset:等高线图所在的位置,这个例子中,我们向z轴投影,所以offset指定为z方向的最小值。
ax1.contour(X,Y,Z,zdir = 'z',offset = -2,cmap = 'rainbow')
如下图所示,底部是该函数的等高线图。
案例演示
以iris数据集为例,来展示各个样本在空间中的分布。由于该数据集有四个变量,我们选择其中的三个来进行展示。
iris数据集链接:
链接:https://pan.baidu.com/s/1h9TpTuz_7iBPk7WmpZdn8w
提取码:pr9p
#读取数据集
columns = ['petal length','petal width','calyx length','calyx width','category']
iris = pd.read_csv('D:\\Py_dataset\\iris.data',names = columns,sep = ',')
#分离特征和标签
Y = iris['category'].values
X = iris.drop('category',axis = 1).values
#绘制样本在空间中的分布
fig = plt.figure(figsize = (6,6))
ax1 = Axes3D(fig)
for lab,color,category in zip(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'],['red','green','blue'],['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']):
#三维散点图使用的是scatter3D
ax1.scatter3D(X[Y == lab,0],#第一个特征
X[Y == lab,1],#第二个特征
X[Y == lab,2],#第三个特征
label = category,#样本的标签
c = color)
ax1.set_xlabel('petal length')
ax1.set_ylabel('petal width')
ax1.set_zlabel('calyx length')
ax1.legend(loc = 'lower right')
三维图形绘制小结:
1.数据可视化贯穿于数据分析过程的始终,便于我们更加直观的理解数据。
2.绘图的过程是一个不断积累的过程,现实世界中的图形非常繁多,总会有我们不认识的。对于以前没有碰到过图形,我们可以直接在网上搜索,基本上都有模板可以参考。
上一篇: ES6学习 - Promise对象
下一篇: Matlab使用-简单的三维图像绘制