Python 畫(huà)出來(lái)六維圖

來(lái)自維基百科
我們的大腦通常最多能感知三維空間,超過(guò)三維就很難想象了。盡管是三維,理解起來(lái)也很費(fèi)勁,所以大多數(shù)情況下都使用二維平面。
不過(guò),我們?nèi)匀豢梢岳L制出多維空間,今天就來(lái)用 Python 的 plotly 庫(kù)繪制下三維到六維的圖,看看長(zhǎng)什么樣。
數(shù)據(jù)我們使用一份來(lái)自 UCI 的真實(shí)汽車數(shù)據(jù)集,該數(shù)據(jù)集包括 205 個(gè)樣本和 26 個(gè)特征,從中選擇 6 個(gè)特征來(lái)繪制圖形:

基礎(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 文件打開(kāi)可以生成交互界面,也可以保存為 png 圖片。
下面增加特征來(lái)繪制三維圖。
繪制 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"))
如何繪制更高維度的圖呢?顯然無(wú)法通過(guò)擴(kuò)展坐標(biāo)軸的形式,不過(guò)有個(gè)小技巧就是制造一個(gè)虛擬維度,可以用不同顏色、形狀大小、形狀類別來(lái)入手。這樣就可以顯示第四個(gè)維度了。
繪制 4-D 圖
下面我們將第四個(gè)變量——車輛油耗(city-mpg)添加到原先的三維圖中,用顏色深淺表示,這樣就繪制出了四維圖??梢钥吹疆?dāng)其他三個(gè)指標(biāo)(馬力、車身重量、車價(jià)格)越高時(shí):車輛油耗是越少的。

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

我們?nèi)匀豢梢员容^容易地地發(fā)現(xiàn):車越貴,發(fā)動(dòng)機(jī)尺寸越大這樣的規(guī)律。
繪制 6-D 圖
接著還可以通過(guò)更改形狀的方式增加第六個(gè)維度——車門數(shù),圓形表示四車門,方形表示兩車門。通常兩個(gè)車門的都是昂貴的豪華跑車,在圖中也可以看出方形主要集中在價(jià)格比較高的區(qū)域。

這樣我們就從普通的二維圖擴(kuò)展到了高維圖,當(dāng)然還可以繼續(xù)拓展,不過(guò)分辨起來(lái)會(huì)越來(lái)越困難。
原文鏈接:
https://medium.com/@prasadostwal/multi-dimension-plots-in-python-from-2d-to-6d-9a2bf7b8cc74
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
window11系統(tǒng)下Python3.11安裝numpy庫(kù)超詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于window11系統(tǒng)下Python3.11安裝numpy庫(kù)的相關(guān)資料,NumPy是Python的第三方擴(kuò)展包,但它并沒(méi)有包含在Python標(biāo)準(zhǔn)庫(kù)中,因此您需要單獨(dú)安裝它,需要的朋友可以參考下2023-12-12
詳解使用pymysql在python中對(duì)mysql的增刪改查操作(綜合)
本篇文章主要介紹了使用pymysql在python中對(duì)mysql的增刪改查操作,通過(guò)pymysql向數(shù)據(jù)庫(kù)進(jìn)行查刪增改,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
Python基于Tkinter的HelloWorld入門實(shí)例
這篇文章主要介紹了Python基于Tkinter的HelloWorld入門實(shí)例,以一個(gè)簡(jiǎn)單實(shí)例分析了Python中Tkinter模塊的使用技巧,需要的朋友可以參考下2015-06-06
Python+PyQt5實(shí)現(xiàn)網(wǎng)口功能測(cè)試詳解
這篇文章主要為大家詳細(xì)介紹了Python+PyQt5實(shí)現(xiàn)網(wǎng)口功能測(cè)試的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
Django與pyecharts結(jié)合的實(shí)例代碼
這篇文章主要介紹了Django與pyecharts結(jié)合的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
使用python實(shí)現(xiàn)抓取中國(guó)銀行外匯牌價(jià)首頁(yè)數(shù)據(jù)實(shí)現(xiàn)
這篇文章主要為大家介紹了如何使用python實(shí)現(xiàn)抓取中國(guó)銀行外匯牌價(jià)首頁(yè)數(shù)據(jù)的實(shí)現(xiàn)示例,有需要的同學(xué)可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Python OpenCV視頻截取并保存實(shí)現(xiàn)代碼
這篇文章主要介紹了Python OpenCV視頻截取并保存實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

