這一小節(jié),我們來(lái)繪制三維圖像。二維圖像可以表示兩個(gè)變量在空間中的分布,三維圖像可以表示三個(gè)變量在空間中的分布。通過(guò)對(duì)三維數(shù)據(jù)進(jìn)行可視化,使得我們可以更加直觀的理解數(shù)據(jù)。
在中學(xué)的時(shí)候,我們接觸的函數(shù)基本都是一元二次函數(shù),如
它的幾何表達(dá)如下圖所示:
一元二次方程.png
到了大學(xué)的時(shí)候,我們接觸到函數(shù)就變得更加復(fù)雜了,如二元二次函數(shù),甚至有更加復(fù)雜(維度更高)的函數(shù)。
上述函數(shù)表達(dá)式的幾何圖如下圖所示:
二元二次函數(shù).png
三維圖像的繪制過(guò)程:
別的不多說(shuō)了,先繪制一個(gè)三維曲面,直接上代碼。
import numpy as np
import matplotlib.pyplot as plt
#繪制三維圖形必須導(dǎo)入的工具包
from mpl_toolkits.mplot3d import Axes3D
#創(chuàng)建三維數(shù)據(jù)
xx = np.arange(-5,5,0.1)
yy = np.arange(-5,5,0.1)
#使用np.meshgrid()方法,將X,Y轉(zhuǎn)化二維平面數(shù)據(jù)。此處可以使用print(X)觀察X,Y的真實(shí)面貌。
X,Y = np.meshgrid(xx,yy)
Z = np.sin(X) + np.cos(Y)
#開(kāi)始繪制三維圖形
#創(chuàng)建三維圖形的窗口(布局)
fig = plt.figure(figsize = (5,5))
ax1 = Axes3D(fig)#還可以使用plt.axes(projection = '3d),兩者的效果是一樣的。
#使用plot_surface()繪制三維曲面圖
ax1.plot_surface(X,Y,Z,cmap = 'rainbow')
#繪制等高線圖
#參數(shù)說(shuō)明:zdir:投影的方向,可以指定為x,y或z;
#offset:等高線圖所在的位置,這個(gè)例子中,我們向z軸投影,所以offset指定為z方向的最小值。
ax1.contour(X,Y,Z,zdir = 'z',offset = -2,cmap = 'rainbow')
如下圖所示,底部是該函數(shù)的等高線圖。
plot_surface.png
案例演示
以iris數(shù)據(jù)集為例,來(lái)展示各個(gè)樣本在空間中的分布。由于該數(shù)據(jù)集有四個(gè)變量,我們選擇其中的三個(gè)來(lái)進(jìn)行展示。
iris數(shù)據(jù)集鏈接:
鏈接:https://pan.baidu.com/s/1h9TpTuz_7iBPk7WmpZdn8w
提取碼:pr9p
#讀取數(shù)據(jù)集
columns = ['petal length','petal width','calyx length','calyx width','category']
iris = pd.read_csv('D:\\Py_dataset\\iris.data',names = columns,sep = ',')
#分離特征和標(biāo)簽
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']):
#三維散點(diǎn)圖使用的是scatter3D
ax1.scatter3D(X[Y == lab,0],#第一個(gè)特征
X[Y == lab,1],#第二個(gè)特征
X[Y == lab,2],#第三個(gè)特征
label = category,#樣本的標(biāo)簽
c = color)
ax1.set_xlabel('petal length')
ax1.set_ylabel('petal width')
ax1.set_zlabel('calyx length')
ax1.legend(loc = 'lower right')
iris樣本的空間分布.png
三維圖形繪制小結(jié):
1.數(shù)據(jù)可視化貫穿于數(shù)據(jù)分析過(guò)程的始終,便于我們更加直觀的理解數(shù)據(jù)。
2.繪圖的過(guò)程是一個(gè)不斷積累的過(guò)程,現(xiàn)實(shí)世界中的圖形非常繁多,總會(huì)有我們不認(rèn)識(shí)的。對(duì)于以前沒(méi)有碰到過(guò)圖形,我們可以直接在網(wǎng)上搜索,基本上都有模板可以參考。