1、2、3維圖見過,用Python畫出來的六維圖見過麼?

程式設計師啟航發表於2019-07-18

我們的大腦通常最多能感知三維空間,超過三維就很難想象了。儘管是三維,理解起來也很費勁,所以大多數情況下都使用二維平面。

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

來自維基百科

不過,我們仍然可以繪製出多維空間,今天就來用 Python 的 plotly 庫繪製下三維到六維的圖,看看長什麼樣。Python學習q-u-n七八四,七五八,二一四教程視訊,工具,各類實戰操作分享

資料我們使用一份來自 UCI 的真實汽車資料集,該資料集包括 205 個樣本和 26 個特徵,從中選擇 6 個特徵來繪製圖形:

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

基礎工作

安裝好 plotly 包:

pip install plotly

載入資料集(文末會提供):

import pandas as pd
data = pd.read_csv("cars.csv")

下面我們先繪製基礎的二維圖表,使用兩個 RPM 和 Speed 兩個特徵即可:

繪製 2-D 圖

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

程式碼實現如下:

import plotly
import plotly.graph_objs as go
#繪製散點圖
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 方法繪製三維圖:

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

程式碼實現如下:

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"))

如何繪製更高維度的圖呢?顯然無法通過擴充套件座標軸的形式,不過有個小技巧就是製造一個虛擬維度,可以用不同顏色、形狀大小、形狀類別來入手。這樣就可以顯示第四個維度了。

繪製 4-D 圖

下面我們將第四個變數——車輛油耗(city-mpg)新增到原先的三維圖中,用顏色深淺表示,這樣就繪製出了四維圖。可以看到當其他三個指標(馬力、車身重量、車價格)越高時:車輛油耗是越少的。

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

繪製 5-D 圖

基於這樣的思想,我們還可以通過修改圓形大小再增加一個維度——發動機尺寸(engine-size)變成五維圖:

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

我們仍然可以比較容易地地發現:車越貴,發動機尺寸越大這樣的規律。

繪製 6-D 圖

接著還可以通過更改形狀的方式增加第六個維度——車門數,圓形表示四車門,方形表示兩車門。通常兩個車門的都是昂貴的豪華跑車,在圖中也可以看出方形主要集中在價格比較高的區域。Python學習q-u-n七八四,七五八,二一四教程視訊,工具,各類實戰操作分享

1、2、3維圖見過,用Python畫出來的六維圖見過麼?

這樣我們就從普通的二維圖擴充套件到了高維圖,當然還可以繼續擴充,不過分辨起來會越來越困難。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913713/viewspace-2650993/,如需轉載,請註明出處,否則將追究法律責任。

相關文章