實(shí)用技巧。
我們的大腦通常最多能感知三維空間,超過三維就很難想象了。盡管是三維,理解起來也很費(fèi)勁,所以大多數(shù)情況下都使用二維平面。不過,我們?nèi)匀豢梢岳L制出多維空間,今天就來用 Python 的 plotly 庫繪制下三維到六維的圖,看看長什么樣。
數(shù)據(jù)我們使用一份來自 UCI 的 真實(shí)汽車數(shù)據(jù)集 ,該數(shù)據(jù)集包括 205 個(gè)樣本和 26 個(gè)特征,從中選擇 6 個(gè)特征來繪制圖形:
?
?
?
Python學(xué)習(xí)交流群:1004391443
基礎(chǔ)工作
安裝好 plotly 包:
pip install plotly
加載數(shù)據(jù)集(文末會(huì)提供):
import pandas as pd data = pd.read_csv("cars.csv")
下面我們先繪制基礎(chǔ)的二維圖表,使用兩個(gè) RPM 和 Speed 兩個(gè)特征即可:
繪制 2-D 圖
?
?
?
?
代碼實(shí)現(xiàn)如下:
import plotly import plotly.graph_objs as go #繪制散點(diǎn)圖 fig1 = go.Scatter(x=data['curb-weight'], y=data['price'], mode='markers') #繪制布局 mylayout = go.Layout(xaxis=dict(title="curb-weight"), yaxis=dict( title="price")) #繪圖 html plotly.offline.plot({"data": [fig1], "layout": mylayout}, auto_open=True)
保存為 html 文件打開可以生成交互界面,也可以保存為 png 圖片。
下面增加特征來繪制三維圖。
繪制 3-D 圖
可以 使用 plotly 的 plot.Scatter3D 方法繪制三維圖:
?
?
?
?
代碼實(shí)現(xiàn)如下:
fig1 = go.Scatter3d(x=data['curb-weight'], y=data['horsepower'], z=data['price'], marker=dict(opacity=0.9, reversescale=True, colorscale='Blues', size=5), line=dict (width=0.02), mode='markers') mylayout = go.Layout(scene=dict(xaxis=dict( title="curb-weight"), yaxis=dict( title="horsepower"), zaxis=dict(title="price")),) plotly.offline.plot({"data": [fig1], "layout": mylayout}, auto_open=True, filename=("3DPlot.html"))
如何繪制更高維度的圖呢?顯然無法通過擴(kuò)展坐標(biāo)軸的形式,不過有個(gè)小技巧就是制造一個(gè)虛擬維度,可以用不同顏色、形狀大小、形狀類別來入手。這樣就可以顯示第四個(gè)維度了。
繪制 4-D 圖
下面我們將第四個(gè)變量——車輛油耗(city-mpg)添加到原先的三維圖中,用顏色深淺表示,這樣就繪制出了四維圖??梢钥吹疆?dāng)其他三個(gè)指標(biāo)(馬力、車身重量、車價(jià)格)越高時(shí):車輛油耗是越少的。
?
?
?
?
繪制 5-D 圖
基于這樣的思想,我們還可以通過修改圓形大小再增加一個(gè)維度——發(fā)動(dòng)機(jī)尺寸(engine-size)變成五維圖:
?
?
?
?
我們?nèi)匀豢梢员容^容易地地發(fā)現(xiàn):車越貴,發(fā)動(dòng)機(jī)尺寸越大這樣的規(guī)律。
繪制 6-D 圖
接著還可以通過更改形狀的方式增加第六個(gè)維度——車門數(shù),圓形表示四車門,方形表示兩車門。通常兩個(gè)車門的都是昂貴的豪華跑車,在圖中也可以看出方形主要集中在價(jià)格比較高的區(qū)域。
?
?
?
?
這樣我們就從普通的二維圖擴(kuò)展到了高維圖,當(dāng)然還可以繼續(xù)拓展,不過分辨起來會(huì)越來越困難。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
