日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python 繪制 3 維以上的高維圖!

系統(tǒng) 2605 0

實(shí)用技巧。

我們的大腦通常最多能感知三維空間,超過(guò)三維就很難想象了。盡管是三維,理解起來(lái)也很費(fèi)勁,所以大多數(shù)情況下都使用二維平面。不過(guò),我們?nèi)匀豢梢岳L制出多維空間,今天就來(lái)用 Python 的 plotly 庫(kù)繪制下三維到六維的圖,看看長(zhǎng)什么樣。

數(shù)據(jù)我們使用一份來(lái)自 UCI 的 真實(shí)汽車(chē)數(shù)據(jù)集 ,該數(shù)據(jù)集包括 205 個(gè)樣本和 26 個(gè)特征,從中選擇 6 個(gè)特征來(lái)繪制圖形:

Python 繪制 3 維以上的高維圖!_第1張圖片

?

?

?

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 圖

Python 繪制 3 維以上的高維圖!_第2張圖片

?

?

?

?

代碼實(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 文件打開(kāi)可以生成交互界面,也可以保存為 png 圖片。

下面增加特征來(lái)繪制三維圖。

繪制 3-D 圖

可以 使用 plotly 的 plot.Scatter3D 方法繪制三維圖:

Python 繪制 3 維以上的高維圖!_第3張圖片

?

?

?

?

代碼實(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"))

          

如何繪制更高維度的圖呢?顯然無(wú)法通過(guò)擴(kuò)展坐標(biāo)軸的形式,不過(guò)有個(gè)小技巧就是制造一個(gè)虛擬維度,可以用不同顏色、形狀大小、形狀類別來(lái)入手。這樣就可以顯示第四個(gè)維度了。

繪制 4-D 圖

下面我們將第四個(gè)變量——車(chē)輛油耗(city-mpg)添加到原先的三維圖中,用顏色深淺表示,這樣就繪制出了四維圖。可以看到當(dāng)其他三個(gè)指標(biāo)(馬力、車(chē)身重量、車(chē)價(jià)格)越高時(shí):車(chē)輛油耗是越少的。

Python 繪制 3 維以上的高維圖!_第4張圖片

?

?

?

?

繪制 5-D 圖

基于這樣的思想,我們還可以通過(guò)修改圓形大小再增加一個(gè)維度——發(fā)動(dòng)機(jī)尺寸(engine-size)變成五維圖:

Python 繪制 3 維以上的高維圖!_第5張圖片

?

?

?

?

我們?nèi)匀豢梢员容^容易地地發(fā)現(xiàn):車(chē)越貴,發(fā)動(dòng)機(jī)尺寸越大這樣的規(guī)律。

繪制 6-D 圖

接著還可以通過(guò)更改形狀的方式增加第六個(gè)維度——車(chē)門(mén)數(shù),圓形表示四車(chē)門(mén),方形表示兩車(chē)門(mén)。通常兩個(gè)車(chē)門(mén)的都是昂貴的豪華跑車(chē),在圖中也可以看出方形主要集中在價(jià)格比較高的區(qū)域。

Python 繪制 3 維以上的高維圖!_第6張圖片

?

?

?

?

這樣我們就從普通的二維圖擴(kuò)展到了高維圖,當(dāng)然還可以繼續(xù)拓展,不過(guò)分辨起來(lái)會(huì)越來(lái)越困難。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 广东省| 方城县| 泰和县| 中宁县| 新河县| 达孜县| 新昌县| 册亨县| 湾仔区| 五华县| 囊谦县| 天祝| 灵川县| 嵩明县| 铁岭市| 肃北| 长沙县| 甘泉县| 上林县| 吉林省| 呈贡县| 乌兰县| 韶关市| 渭源县| 吉木萨尔县| 且末县| 徐汇区| 永修县| 金华市| 静安区| 合川市| 茂名市| 临朐县| 施甸县| 溆浦县| 富川| 密山市| 白玉县| 和田市| 宁武县| 麦盖提县|