使用 Plotly 創(chuàng)建 60+ 令人驚嘆的交互式圖表、地圖
在這篇文章中,云朵君演示如何利用我最喜歡的數(shù)據(jù)可視化庫 -- Plotly 的強大功能,用我們都喜歡的 Python 繪制出論文級質(zhì)量的圖表、地圖和動畫。
Plotly 可以輕松創(chuàng)建交互式工具提示,傳達有關鼠標懸停的數(shù)據(jù)點的額外信息。
為什么選擇 Plotly
說到 Python 中的數(shù)據(jù)可視化,人們經(jīng)常會想到三個名字: Matplotlib、Seaborn 和 Plotly。
Plotly 是一個功能強大、用途廣泛的 Python 庫,提供多種圖表類型,從基本的線圖和散點圖到復雜的三維可視化和地理地圖。Plotly 還提供了直觀、友好的用戶界面,因此深受數(shù)據(jù)科學家和分析師的歡迎。
Plotly 提供多種圖表,從統(tǒng)計或科學圖表到金融或地理圖表。這些圖表可以使用各種方法顯示,包括 Jupyter 筆記本、HTML 和 Dash 網(wǎng)絡應用程序。
Plotly 以其交互性而聞名。與主要生成靜態(tài)圖表的 Matplotlib 和 Seaborn 不同,Plotly 生成的交互式圖表允許用戶縮放、平移和懸停以獲取更多細節(jié)。這一功能對于 EDA 來說非常有用。
你準備好提升自己的 Plotly 數(shù)據(jù)可視化技能了嗎?
公共數(shù)據(jù)集
- timesData.csv [1]2015-2016年世界大學排名[2]
- gapminder_data_graphs.csv[3] / gapminder.csv (參見 px.data.gapminder() )該數(shù)據(jù)集是使用來自[4]Gapminder 網(wǎng)站[5]的數(shù)據(jù)生成的,該網(wǎng)站專注于收集和分享有關地方、國家和全球?qū)用娴纳鐣?、?jīng)濟和環(huán)境發(fā)展的統(tǒng)計數(shù)據(jù)和其他信息。
- 1950–2018 年預期壽命與 GDP.csv[6]
- honeyproduction.csv[7]蜂蜜產(chǎn)量
- WHR2023.csv 2023年世界幸福報告[8]
- Pokemon.csv[9]完整的寶可夢數(shù)據(jù)集[10]。該數(shù)據(jù)集包含所有七代寶可夢的 802 只寶可夢的信息。數(shù)據(jù)集中包含的信息包括基礎屬性、與其他類型的寶可夢的對抗表現(xiàn)、身高、體重、分類、蛋的步數(shù)、經(jīng)驗值、能力等。這些信息是從http://serebii.net/抓取的。[11]
- StudentsPerformance.csv[12]該數(shù)據(jù)集包含學生在各個科目中獲得的分數(shù)。
- px.data.stocks() 內(nèi)置規(guī)范化股票數(shù)據(jù)(GOOG、AMZN 等)
- px.data.iris() 內(nèi)置鳶尾花數(shù)據(jù)集[13][16]
- px.data.tips() 內(nèi)置Tips 數(shù)據(jù)集[14]
- px.data.wind() 內(nèi)置風數(shù)據(jù)集
- px.data.carshare() 內(nèi)置汽車共享數(shù)據(jù)集
- 波士頓犯罪記錄[15]:犯罪時間、地點及描述。數(shù)據(jù)由 Analyze Boston 提供。
- weatherAUS.csv[16]該數(shù)據(jù)集包含來自澳大利亞眾多氣象站的約 10 年每日天氣觀測數(shù)據(jù)
- us_covid19_daily.csv[17]美國新冠肺炎疫情日報
- 使用“heart.csv”數(shù)據(jù)集探索心臟數(shù)據(jù)[18]
- sklearn.datasets.make_classification[19]這會首先創(chuàng)建呈正態(tài)分布(std=1)的點簇,并為每個類分配相同數(shù)量的簇。它引入了這些特征之間的相互依賴性,并向數(shù)據(jù)中添加了各種類型的噪聲。
- winemag-data-130k-v2.csv[20] 130k 條葡萄酒評論,包括品種、地點、酒莊、價格和描述。
- Consumer_Complaints.csv[21]該數(shù)據(jù)集包括消費者對金融產(chǎn)品的投訴。
- kc_house_data.csv[22]該數(shù)據(jù)集包含美國華盛頓州金縣(King County)的房價數(shù)據(jù),該數(shù)據(jù)也涵蓋西雅圖。該數(shù)據(jù)集來自 Kaggle 。
- 2011_us_ag_exports.csv[23] 2011 年美國農(nóng)業(yè)出口。
- mt_bruno_elevation.csv[24] 圣布魯諾山海拔。
Plotly基本應用
- Plotly[25]可以使用pip[26]安裝
!pip install plotly==5.24.1
!pip install dash
!pip install folium
- 在整個研究過程中導入必要的 Python 庫
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
# plotly
# import plotly.plotly as py
from plotly.offline import init_notebook_mode, iplot, plot
import plotly as py
import plotly.graph_objects as go
import plotly.express as px
from dash import Dash, dcc, html, Input, Output
import folium
from folium import plugins
Line Plot
- 使用內(nèi)置數(shù)據(jù)集px.data.gapminder()[27]和 go.Scatter() 創(chuàng)建包含 2 個數(shù)據(jù)框的線圖。
人均GDP與預期壽命:瑞典與日本
- 調(diào)用 px.line() 為上述數(shù)據(jù)集繪制 折線圖[28]
德國的預期壽命
大洋洲的預期壽命
- 使用相同的數(shù)據(jù)集創(chuàng)建 Dash App[29]
各大洲各國預期壽命進展
- 我們還可以使用px.line 繪制標準化股票數(shù)據(jù)
AMZN股票數(shù)據(jù)
- 使用 2 個數(shù)據(jù)創(chuàng)建另一個自定義線圖
引用量和教學與世界百強大學排名對比
散點圖
- 使用鳶尾花數(shù)據(jù)集和 px.scatter() 來演示 散點圖[30]
散點圖:萼片寬度與萼片長度(鳶尾花數(shù)據(jù)集)
- 我們可以使用 px.scatter() 來可視化多個數(shù)據(jù)框
2014、2015 和 2016 年世界百強大學引文與排名對比
散點圖矩陣
- 導入 plotly.figure_factory 來創(chuàng)建結合箱線圖(如下所述)和散點圖的散點圖矩陣。
散點圖矩陣
氣泡圖
- 使用鳶尾花數(shù)據(jù)集和 px.scatter() 來演示氣泡圖
氣泡圖:萼片寬度與萼片長度(鳶尾花數(shù)據(jù)集)
- 使用教學色階和研究規(guī)模參數(shù)創(chuàng)建“引用量 vs 世界排名”氣泡圖
引用量與世界排名 教學色標 研究規(guī)模
- 可以使用 px.scatter() 創(chuàng)建動畫氣泡圖。
示例 1:讀取數(shù)據(jù)集 Life Expectancy vs GDP 1950–2018.csv 并調(diào)整數(shù)據(jù)框
- 創(chuàng)建以下動畫
動畫氣泡圖:人均GDP與預期壽命
示例 2:讀取蜂蜜產(chǎn)量數(shù)據(jù)集并創(chuàng)建第二個動畫氣泡圖
動畫氣泡圖:蜂蜜生產(chǎn)
直方圖
- 讀取數(shù)據(jù)集timesData.csv[31]來繪制以下直方圖
直方圖:2011 年和 2015 年師生比例
分布圖
- 這是在 Plotly 中創(chuàng)建分布圖[32]
分布圖
樹形圖
- 讀取波士頓犯罪數(shù)據(jù)集并繪制以下樹狀圖
波士頓主要犯罪事件樹狀圖
子彈圖
- 方法plotly.figure_factory.create_bullet可用于創(chuàng)建子彈圖,如下所示:
簡單子彈圖
面積圖
- 下面的鳶尾花數(shù)據(jù)示例展示了填充面積圖
鳶尾花數(shù)據(jù)填充面積圖示例
條形圖
- 繪制波士頓十大重大犯罪的條形圖很有指導意義
波士頓十大重大犯罪事件的條形圖
餅圖
- 使用波士頓犯罪數(shù)據(jù)集創(chuàng)建以下基本餅圖
波士頓犯罪數(shù)據(jù)集:每年的犯罪數(shù)量
- 讀取數(shù)據(jù)集 StudentsPerformance.csv 來創(chuàng)建更高級的父母教育水平餅圖.
父母受教育程度餅圖
旭日圖
- 父母的教育水平也可以用旭日圖來分析。
父母受教育程度的旭日圖
箱線圖
- 創(chuàng)建 2014 年大學總分/研究的箱線圖。
2014年大學總分/研究箱線圖
- 讀取 Pokemon數(shù)據(jù)集[33],創(chuàng)建帶有自定義異常值的箱線圖
Pokemon 數(shù)據(jù)集:帶有自定義異常值的箱線圖
- 我們還可以檢查前面提到的散點圖矩陣
口袋妖怪數(shù)據(jù)集的散點圖矩陣
小提琴圖
- 使用 Pokémon 數(shù)據(jù)集創(chuàng)建以下小提琴圖
口袋妖怪數(shù)據(jù)集的小提琴圖
帶狀圖
- 使用 px.data.tips() 數(shù)據(jù)集創(chuàng)建具有可變點大小的自定義帶狀圖[34]
具有可變點大小的定制帶狀圖(Tips 數(shù)據(jù)集)
群體圖
- 使用 px.data.tips() 數(shù)據(jù)集創(chuàng)建群體圖[35]
tips數(shù)據(jù)集:基本群圖
極坐標圖
- 使用 px.data.wind() 創(chuàng)建基本極坐標條形圖[36]
風數(shù)據(jù)集:極坐標條形圖
- 讀取weatherAUS.csv數(shù)據(jù)集創(chuàng)建風玫瑰圖
玫瑰圖:降雨量與風向(weatherAUS.csv 數(shù)據(jù)集)
雷達圖
- 使用weatherAUS.csv數(shù)據(jù)集創(chuàng)建風雷達圖
雷達圖:降雨量與風向(weatherAUS.csv 數(shù)據(jù)集)
密度輪廓
- 讀取數(shù)據(jù)集 us_covid19_daily.csv
import numpy as np
import pandas as pd
import plotly.express as px
import warnings
warnings.filterwarnings('ignore')
df = pd.read_csv('us_covid19_daily.csv')
df.dropna(inplace = True)
#display(df.head())
display(df.info())
<class 'pandas.core.frame.DataFrame'>
Index: 76 entries, 0 to 75
Data columns (total 25 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 date 76 non-null int64
1 states 76 non-null int64
2 positive 76 non-null int64
3 negative 76 non-null float64
4 pending 76 non-null float64
5 hospitalizedCurrently 76 non-null float64
6 hospitalizedCumulative 76 non-null float64
7 inIcuCurrently 76 non-null float64
8 inIcuCumulative 76 non-null float64
9 onVentilatorCurrently 76 non-null float64
10 onVentilatorCumulative 76 non-null float64
11 recovered 76 non-null float64
12 dateChecked 76 non-null object
13 death 76 non-null float64
14 hospitalized 76 non-null float64
15 lastModified 76 non-null object
16 total 76 non-null int64
17 totalTestResults 76 non-null int64
18 posNeg 76 non-null int64
19 deathIncrease 76 non-null int64
20 hospitalizedIncrease 76 non-null int64
21 negativeIncrease 76 non-null int64
22 positiveIncrease 76 non-null int64
23 totalTestResultsIncrease 76 non-null int64
24 hash 76 non-null object
dtypes: float64(11), int64(11), object(3)
memory usage: 15.4+ KB
- 創(chuàng)建對數(shù)域密度等高線圖
美國 COVID-19 日報:對數(shù)域正值與深度密度輪廓圖
- 看下面的鳶尾花數(shù)據(jù)集示例
鳶尾花數(shù)據(jù)集:密度輪廓圖
- 我們可以通過調(diào)用fig.update_traces來更改軌跡的配置,從而在 plotly.express 中創(chuàng)建填充輪廓圖[37]
鳶尾花數(shù)據(jù)集:填充輪廓圖
密度熱圖
- 使用上述數(shù)據(jù)框 Data_to_plot 創(chuàng)建密度熱圖
美國 COVID-19 日報:對數(shù)域正值與深度密度熱圖
相關矩陣
- 讀取heart.csv[38]數(shù)據(jù)集以創(chuàng)建相關矩陣<class 'pandas.core.frame.DataFrame'> RangeIndex: 303 entries, 0 to 302 Data columns (total 14 columns):
Column Non-Null Count Dtype
0 age 303 non-null int641 sex 303 non-null int642 cp 303 non-null int643 trestbps 303 non-null int644 chol 303 non-null int645 fbs 303 non-null int646 restecg 303 non-null int647 thalach 303 non-null int648 exang 303 non-null int649 oldpeak 303 non-null float64 10 slope 303 non-null int6411 ca 303 non-null int6412 thal 303 non-null int6413 target 303 non-null int64dtypes: float64(1), int64(13) memory usage: 33.3 KB
Theart.csv數(shù)據(jù)集:連續(xù)特征的相關矩陣
- 這是使用px.imshow()
心臟數(shù)據(jù)集:使用 px.imshow() 的相關矩陣
決策邊界
- 使用sklearn.datasets.make_classification[39]生成一些自定義數(shù)據(jù)點。 我們的任務是 構建二分類(二進制)機器學習分類器的決策邊界。
- 名稱 =[“Decision Tree”, ”Random Forest”, “ExtraTrees”]。
- 端到端 ML 可視化工作流程
低信噪比輸入聚類的決策邊界:數(shù)據(jù)集 = [make_moons(noise=0.6, random_state=0),make_circles(noise=0.4, factor=0.5, random_state=1),make_blobs()]
高信噪比的輸入聚類的決策邊界: datasets = [make_moons(noise=0.3, random_state=0) ,make_circles(noise=0.2, factor=0.5, random_state=1) ,make_blobs() ]
高信噪比的輸入聚類的決策邊界: datasets = [make_moons(noise=0.3, random_state=0) ,make_circles(noise=0.2, factor=0.5, random_state=1) ,make_blobs() ]
甘特圖
- 使用時間步長創(chuàng)建甘特圖[40]
帶有時間步長的甘特圖
KDE Histogram2dContour
- 讀取數(shù)據(jù)集 winemag-data-130k-v2.csv 以創(chuàng)建 KDE Histogram2dContour 圖
數(shù)據(jù)集 winemag-data-130k-v2.csv:KDE Histogram2dContour 圖
數(shù)據(jù)集 winemag-data-130k-v2.csv:KDE Histogram2dContour 圖
- 我們可以創(chuàng)建更高級的 KDE Histogram2dContour plot[41]
- 這里,輸出存儲在 HTML 文件temp-plot.html中
2 個正態(tài)分布的KDE Histogram2dContour
平行坐標
- 使用 Iris 數(shù)據(jù)集通過plotly.express創(chuàng)建平行坐標圖[42]
鳶尾花數(shù)據(jù)集:平行坐標圖
平行類別
- 使用 Tips 數(shù)據(jù)集通過 plotly.express 創(chuàng)建平行類別圖[43]
鳶尾花數(shù)據(jù)集:平行坐標圖
3D繪圖
- 創(chuàng)建以下人工數(shù)據(jù)集
df2 =pd.DataFrame(np.random.rand(40,4))
df2['label'] = np.round((3*np.random.rand(40,1) - 3)*-1)
df2[df2['label'] == 0] = 1
df2['label'] = df2['label'].astype(int).map({1:'Label_1', 2:'Label_2', 3:'Label_3'})
df2.columns = ['Value_1','Value_2','Value_3','Value_4', 'Labels']
- 使用該數(shù)據(jù)集來說明三維散點圖
3D散點圖
三元組散點圖
- 使用上面的數(shù)據(jù)框 df2 創(chuàng)建三元組散點
三元組散點圖
瀑布圖
- 使用瀑布圖以圖形方式表示損益
瀑布圖:損益
漏斗圖
- 創(chuàng)建漏斗圖
漏斗圖
漏斗圖
地圖
- 讀取Consumer_Complaints.csv[44]數(shù)據(jù)集來創(chuàng)建美國各州消費者投訴熱圖 [20]。
- 為此,我們需要從以下來源收集緯度、經(jīng)度值:
https://www.factmonster.com/us/postal-information/state-abbreviations-and-state-postal-codes
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 670598 entries, 0 to 670597
Data columns (total 18 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date received 670598 non-null object
1 Product 670598 non-null object
2 Sub-product 472396 non-null object
3 Issue 670598 non-null object
4 Sub-issue 269868 non-null object
5 Consumer complaint narrative 114704 non-null object
6 Company public response 145197 non-null object
7 Company 670598 non-null object
8 State 665293 non-null object
9 ZIP code 665274 non-null object
10 Tags 94730 non-null object
11 Consumer consent provided? 208151 non-null object
12 Submitted via 670598 non-null object
13 Date sent to company 670598 non-null object
14 Company response to consumer 670598 non-null object
15 Timely response? 670598 non-null object
16 Consumer disputed? 629179 non-null object
17 Complaint ID 670598 non-null int64
dtypes: int64(1), object(17)
memory usage: 92.1+ MB
美國各州熱圖——消費者投訴
- 以下是各州消費者投訴的地圖
各州消費者投訴
散點地圖
- 調(diào)用該函數(shù)px.scatter_map在瓦片地圖上創(chuàng)建散點圖
汽車共享數(shù)據(jù)集:瓦片地圖上的散點圖
- 使用go.Scattermapbox()為同一數(shù)據(jù)集創(chuàng)建與上述散點圖略有不同的版本
汽車共享數(shù)據(jù)集:go.Scattermapbox()
汽車共享數(shù)據(jù)集:go.Scattermapbox()
- 這是基于 px.scatter_mapbox() 的上述地圖的第三個版本
entroid_lat centroid_lon car_hours peak_hour
0 45.471549 -73.588684 1772.750000 2
1 45.543865 -73.562456 986.333333 23
2 45.487640 -73.642767 354.750000 20
3 45.522870 -73.595677 560.166667 23
4 45.453971 -73.738946 2836.666667 19
使用 px.scatter_mapbox() 在 Mapbox 地圖上獲取汽車共享數(shù)據(jù)
- 使用 px.scatter_mapbox() 結合不帶 mapbox token的公共 USGS 影像地圖來檢查kc_house_data.csv數(shù)據(jù)集[45]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 21613 entries, 0 to 21612
Data columns (total 21 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 id 21613 non-null int64
1 date 21613 non-null object
2 price 21613 non-null float64
3 bedrooms 21613 non-null int64
4 bathrooms 21613 non-null float64
5 sqft_living 21613 non-null int64
6 sqft_lot 21613 non-null int64
7 floors 21613 non-null float64
8 waterfront 21613 non-null int64
9 view 21613 non-null int64
10 condition 21613 non-null int64
11 grade 21613 non-null int64
12 sqft_above 21611 non-null float64
13 sqft_basement 21613 non-null int64
14 yr_built 21613 non-null int64
15 yr_renovated 21613 non-null int64
16 zipcode 21613 non-null int64
17 lat 21613 non-null float64
18 long 21613 non-null float64
19 sqft_living15 21613 non-null int64
20 sqft_lot15 21613 non-null int64
dtypes: float64(6), int64(14), object(1)
memory usage: 3.5+ MB
KC WA 房價數(shù)據(jù)集:px.scatter_mapbox() 按樓層著色
KC WA 房價數(shù)據(jù)集:px.scatter_mapbox() 按價格著色
等值線圖
- 調(diào)用px.choropleth為數(shù)據(jù)集[46]2011_us_ag_exports.csv[47]創(chuàng)建以下等值線圖
等值線地圖
地理散點圖
plotly.express.scatter_geo()函數(shù)可用于將地理數(shù)據(jù)繪制到地圖上。
地理散點圖:px.data.gapminder()
下拉式菜單
- 創(chuàng)建一個簡單的下拉菜單,以便在單個圖中可視化不同的類別。
在這個例子中,我們將從www.basketball-reference.com抓取各個球員的NBA統(tǒng)計數(shù)據(jù)
我們關注場均得分、籃板和助攻排名前十的球員。我們的菜單包含三個條形圖。每個條形圖代表不同的類別(得分、籃板和助攻)
條形圖:前 10 名領導者(積分)
B條形圖:前 10 名領導者的得分
條形圖:前 10 名領先者的反彈
條形圖:前 10 名領導者的協(xié)助
圖像
- 使用cv2.imread()[48]顯示圖像文件中的圖像
顯示圖像文件中的圖像
3D表面圖
- 我們可以調(diào)用go.Surface()在 Plotly 中繪制 [3D 表面圖]](https://plotly.com/python/3d-surface-plots/ "3D 表面圖]")
Plotly 中的 3D 表面地形圖示例:布魯諾山海拔
Plotly 可視化總結
以下是整個研究中討論的 Plotly 可視化的商業(yè)價值和詮釋的摘要:
- 線形圖強調(diào) Y 軸上的指標隨 X 軸上的變量而發(fā)生的變化,是時間序列分析(TSA)的最佳實踐,如氣象學、金融科技、醫(yī)療保健、交通等。
- 散點圖顯示兩組數(shù)據(jù)之間的關系/相關性,你可以從數(shù)據(jù)中看出明顯的趨勢。散點圖在現(xiàn)實生活中用于直觀地顯示二元數(shù)據(jù)(銷售、天氣、醫(yī)療、生物、經(jīng)濟等)
- 散點圖矩陣是粗略判斷多個變量之間是否存在線性相關關系的好方法。這尤其有助于找出可能與基因組或蛋白質(zhì)組數(shù)據(jù)(社會科學、市場研究、金融、醫(yī)療保健和環(huán)境科學)具有類似相關性的特定變量。該矩陣表示不同變量組合之間的雙變量或成對關系。
- 氣泡圖評估模式的一致性。某些領域的氣泡大小一致性較低,意味著關系中存在較多差異(銀行業(yè)務、消費者滿意度評級、收入預測和繪圖以及特定產(chǎn)品的生產(chǎn)成本)。
- 直方圖將數(shù)值變量值的分布繪制成一系列條形圖。直方圖可以很好地顯示數(shù)據(jù)集變量的一般分布特征。你可以大致看出分布的峰值在哪里,分布是偏斜還是對稱,以及是否存在異常值用于分析股票市場收益、醫(yī)療保健行業(yè)、教育、客戶購買金額、制造缺陷和質(zhì)量控制、社會科學中的調(diào)查結果、環(huán)境科學中的空氣質(zhì)量指數(shù)、基于人口統(tǒng)計學的城市年齡分布、物理學中的粒子能級、人力資源中的員工任期等)。
- 分布圖表示連續(xù)數(shù)據(jù)變量的總體分布(參見 Jointplot、Pairplot、Rugplot、Kdeplot )。Distplot 可用于檢查單變量和雙變量分布(參見上述用例)。
- 樹狀圖用于表示關鍵績效指標,深色可突出極端值、高或低。樹狀圖是一種基于區(qū)域的分層數(shù)據(jù)圖。樹狀圖常見于數(shù)據(jù)儀表盤(股票市場、抵達延誤、汽車行業(yè)、營銷策略、城市各時期的降雨量、特定生物群落中的動植物物種清單等)。
- 子彈圖用于在一個條形圖中比較兩個衡量指標。它最適合用來比較一個主要衡量標準與一個設定標準(次要衡量標準)的進展情況。例如:需求計劃、實際凈利潤率與目標凈利潤率、KPI 與銷售和零售基準的比較等。
- 面積圖結合折線圖和柱狀圖,顯示一個或多個組的數(shù)值如何隨第二個變量(通常是時間變量)的變化而變化。KPI 業(yè)務報告儀表板、多彩折線圖 BI 圖表和極簡面積圖與進度環(huán)信息圖表的前 3 個示例。這有助于戰(zhàn)略決策和預測。戰(zhàn)略性地利用這些圖表可以推動業(yè)務效益和提升績效,塑造組織的成功之路。
- 柱狀圖比較不同類別之間的匯總統(tǒng)計數(shù)據(jù)。每個條形圖代表一個離散類別。它顯示了數(shù)字變量和分類變量之間的關系(敏捷制造的工業(yè)應用、供應鏈、客戶需求、價格趨勢監(jiān)控、波動性、安全運動指標等)。
- 餅圖將部分與整體進行比較。每個切片的大小與每個類別在整體中的相對大小成正比(銷售額、游客流量、出版費、石油儲備、投資組合拆分、安卓系統(tǒng)分布、市場份額)。
- 旭日圖由一個內(nèi)圈組成,周圍環(huán)繞著更深的層級。它用于將分層數(shù)據(jù)可視化(產(chǎn)業(yè)鏈和企業(yè)集團內(nèi)部關系、增強型戰(zhàn)略決策、高級定制技術)。
- 方框圖用于比較和對比兩個或多個組(不同組的年齡、年耗電量或溫度)。
- 小提琴圖是盒圖與核密度圖的混合體,可顯示數(shù)據(jù)中的峰值。它是雙峰數(shù)據(jù)的理想選擇,而方框圖本身無法區(qū)分單峰數(shù)據(jù)和雙峰數(shù)據(jù)(產(chǎn)品用戶的人口統(tǒng)計、不同產(chǎn)品系列中每個客戶的收入范圍、數(shù)據(jù)驅(qū)動的臨床決策和服務管理)。
- 帶狀圖是一種單軸散點圖,用于可視化許多單個一維值的分布。它非常適合顯示分布中的單個值。帶狀圖適用于各行各業(yè),包括研究、醫(yī)療保健和制造業(yè)。
- 蜂群圖是一種分類散點圖,用于可視化數(shù)據(jù)集中數(shù)據(jù)點的分布。它通過顯示單個數(shù)據(jù)點對盒圖或小提琴圖等其他圖進行補充。蜂群圖最適用于有許多獨立特征的分類問題(如醫(yī)療保健)。
- 極坐標圖使用極坐標系表示兩個數(shù)值變量。極坐標圖的一些應用領域包括導航、工程、物理和生物等。
- 雷達圖用于在由 3 個或更多定量變量組成的二維圖表上展示多元數(shù)據(jù)(例如,比較不同的產(chǎn)品和概念、分析產(chǎn)品在一段時間內(nèi)的市場表現(xiàn)、做出數(shù)據(jù)驅(qū)動的決策)。它可以在市場營銷、分析、銷售、研究、教育等不同領域發(fā)揮重要作用。
- 密度等值線將數(shù)據(jù)點的密度描繪成一組離散的層次。與地形圖上的等高線類似,每個等高線邊界都是密度恒定的隔離線。例如,這種繪圖對生態(tài)學可能很有用。
- 密度熱圖是數(shù)值數(shù)據(jù)的圖形表示法,數(shù)據(jù)集中的單個數(shù)據(jù)點用不同的顏色表示。熱圖是理解數(shù)據(jù)的強大工具,在許多行業(yè)都有廣泛的用例和應用--從股市分析到網(wǎng)站分析。
- 相關矩陣可以輕松地將數(shù)據(jù)中的關聯(lián)可視化。這使其成為構建 ML 模型的重要步驟。它還可用于根據(jù)數(shù)據(jù)進行預測和決策。低相關系數(shù)表明兩個變量之間的關系并不緊密。
- 決策邊界(Decision Boundary)是將一類實例與另一類實例分開的線或超平面。它廣泛應用于金融、醫(yī)療保健和市場營銷等多個領域。
- 甘特圖是一種項目管理圖,允許項目經(jīng)理創(chuàng)建項目進度表。它顯示了項目任務的完成順序、到期時間、持續(xù)時間等詳細信息。
- KDE Histogram2dContour Plot 是一種二維直方圖等高線圖(如城市建筑能源模型)。
- 平行坐標圖非常適合將多個變量放在一起進行比較,并查看它們之間的關系。提出散點圖矩陣、字形和平行坐標等多維圖形,是為了便于探索多變量數(shù)據(jù)(如比較汽車模型、細菌與藥物)。
- 平行分類圖(也稱平行集或沖積圖)是多維分類數(shù)據(jù)集的可視化。數(shù)據(jù)集中的每個變量由一列矩形表示,每個矩形對應該變量的一個離散值(如醫(yī)學研究、葡萄酒質(zhì)量探索)。
- 三維圖是可視化三維數(shù)據(jù)(如有兩個因變量和一個自變量的數(shù)據(jù))的重要工具。在試圖發(fā)現(xiàn)三個維度上可能存在的相關性時,三維圖可能非常有用(例如氣候變化、化石損耗、生態(tài)毒性、人類健康)。
- 散點三元圖是一種特殊的三元圖,是一種三角形圖,用于表示三個變量相加等于一個常數(shù)的比率(如土壤分析、基因組研究、化合物、市場研究、營養(yǎng)評估、投資分析、人口研究、項目管理、生態(tài)學)。
- 瀑布圖有助于了解初始值(如凈收入)如何受到一系列正值和負值的影響。瀑布圖上的每個條形圖都顯示了增加或減少,最后在圖表右側(cè)的條形圖代表了總值。例如,瀑布圖顯示每個 “產(chǎn)品 ”的 “利潤”。金融行業(yè)示例:研究各種收入流對組織整體利潤的影響。
- 漏斗圖是一種專門的圖表類型,用于展示用戶在業(yè)務或銷售流程中的流動情況。從漏斗的寬度可以看出流程中每個階段的用戶數(shù)量(如 B2B SaaS 產(chǎn)品、消費技術漏斗分析、MINDBODY、電子商務漏斗、Rappi A/B 測試、金融技術產(chǎn)品、QuickBooks、媒體漏斗、NBCUniversal)。
- 地圖一直被用來幫助人們導航和了解周圍環(huán)境。在大數(shù)據(jù)時代,地圖已成為數(shù)據(jù)可視化的重要工具。地理信息系統(tǒng)(GIS)將數(shù)據(jù)與地圖連接起來,整合了地理空間數(shù)據(jù)。
- 散點地圖框是地理信息系統(tǒng)中使用的瓦片地圖上的散點圖。航空、運輸、房地產(chǎn)、土木工程、航運、研究人員和咨詢等許多行業(yè)都依賴地理信息系統(tǒng)。
- 等高圖是由彩色多邊形組成的地圖。這些地圖用于表示一個確定地理區(qū)域內(nèi)某一數(shù)量的空間變化??v橫圖在戰(zhàn)略規(guī)劃和數(shù)據(jù)驅(qū)動決策中發(fā)揮著重要作用。
- 地理散點圖:地圖上的每一行數(shù)據(jù)都用一個符號標記來表示。地理空間散點圖可將數(shù)據(jù)源中的數(shù)據(jù)分布到各個地理位置,還可根據(jù)所選的數(shù)據(jù)庫字段為數(shù)據(jù)點著色,并縮放數(shù)據(jù)點的大小(如關鍵任務應急服務應用程序、大型基礎設施管理項目)。
- 下拉菜單是簡潔圖形用戶界面的代名詞。它們提供了一個隱藏的功能世界,不會讓用戶因按鈕過多而不知所措。最佳行業(yè)案例包括表單填寫、屬性選擇、Bootstrap 服務臺模板、酒店/旅行預訂、Facebook、Apple、Medium、Sunglass Hut、Photoshop、Ryanair、Converse、Shiva、EdTech、Airbnb、Puma、Dribble、Profile Dropdown、The extra cup、Help and Feedback、電子商務、醫(yī)療保健和人力資源。
- 圖像表示由基于人工智能的深度學習算法處理的輸入像素網(wǎng)格(電子商務、人臉識別、智慧城市、交通流動性、質(zhì)量控制、安全、醫(yī)療保健、自動駕駛汽車、農(nóng)業(yè)、制造業(yè)、內(nèi)容管理)
- 3D表面圖是描述兩個變量函數(shù)的圖形。它基本上是三維表面的二維表示。行業(yè)實例包括幾乎所有設備應用、暴露于自由基的材料的界面化學、生物和醫(yī)學研究領域。
寫在最后
- 數(shù)據(jù)可視化是數(shù)據(jù)科學的關鍵組成部分,它能增強對復雜數(shù)據(jù)的理解和交流。
- 在本文中,我們展示了如何在交互式數(shù)據(jù)可視化中使用整體部分講故事技術。
- 我們使用數(shù)據(jù)科學家感興趣的 22 個公共領域數(shù)據(jù)集討論了大量代碼片段、圖形用戶界面和 EDA 示例。
- 我們將自定義示例與現(xiàn)實生活中的數(shù)據(jù)集相結合,用 Python 中的 Plotly 創(chuàng)建了 63 個令人驚嘆的圖形、圖表、地圖和動畫。
- 在整個研究過程中,我們對 Plotly 進行了深入分析。我們探討了這個著名 Python 庫的優(yōu)缺點,同時還通過詳細示例和實踐代碼片段展示了它的功能。
參考資料
[1] timesData.csv : https://www.kaggle.com/code/kanncaa1/plotly-tutorial-for-beginners/input?select=timesData.csv
[2] 2015-2016年世界大學排名: https://www.timeshighereducation.com/world-university-rankings
[3] gapminder_data_graphs.csv: https://www.kaggle.com/datasets/albertovidalrod/gapminder-dataset
[4] gapminder.csv (參見 px.data.gapminder() )該數(shù)據(jù)集是使用來自: https://github.com/kirenz/datasets/blob/master/gapminder.csv
[5] Gapminder 網(wǎng)站: https://www.gapminder.org/data/
[6] 1950–2018 年預期壽命與 GDP.csv: https://www.kaggle.com/code/luxoloshilofunde/life-expectancy-vs-gdp-per-capita-1950-2018/input?select=Life+Expectancy+vs+GDP+1950-2018.csv
[7] honeyproduction.csv: https://www.kaggle.com/datasets/jessicali9530/honey-production
[8] 2023年世界幸福報告: https://www.kaggle.com/datasets/ajaypalsinghlo/world-happiness-report-2023
[9] Pokemon.csv: https://www.kaggle.com/code/thebrownviking20/intermediate-visualization-tutorial-using-plotly/input?select=Pokemon.csv
[10] 數(shù)據(jù)集: https://www.kaggle.com/datasets/rounakbanik/pokemon
[11] http://serebii.net/抓取的。: http://serebii.net/
[12] StudentsPerformance.csv: https://www.kaggle.com/code/desalegngeb/plotly-guide-customize-for-better-visualizations/input?select=StudentsPerformance.csv
[13] 數(shù)據(jù)集: https://scikit-learn.org/1.5/auto_examples/datasets/plot_iris_dataset.html
[14] Tips 數(shù)據(jù)集: https://www.kaggle.com/code/sanjanabasu/tips-dataset
[15] 波士頓犯罪記錄: https://www.kaggle.com/datasets/AnalyzeBoston/crimes-in-boston
[16] weatherAUS.csv: https://www.kaggle.com/code/desalegngeb/plotly-guide-customize-for-better-visualizations/input?select=weatherAUS.csv
[17] us_covid19_daily.csv: https://www.kaggle.com/code/servietsky/plotly-20-best-interactive-graphs-tutorial/input?select=us_covid19_daily.csv
[18] 使用“heart.csv”數(shù)據(jù)集探索心臟數(shù)據(jù): https://www.kaggle.com/datasets/arezaei81/heartcsv
[19] sklearn.datasets.make_classification: https://scikit-learn.org/1.5/modules/generated/sklearn.datasets.make_classification.html
[20] winemag-data-130k-v2.csv: https://www.kaggle.com/code/residentmario/introduction-to-plotly-optional/input?select=winemag-data-130k-v2.csv
[21] Consumer_Complaints.csv: https://www.kaggle.com/code/rajacsp/eda-and-visualization-heatmap-plotly-donutplot/input
[22] kc_house_data.csv: https://www.kaggle.com/datasets/shivachandel/kc-house-data
[23] 2011_us_ag_exports.csv: https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv
[24] mt_bruno_elevation.csv: https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv
[25] Plotly: https://plotly.com/python/getting-started/
[26] pip: https://pypi.org/project/plotly/
[27] px.data.gapminder(): https://stackoverflow.com/questions/73488602/line-graph-using-plotly
[28] 折線圖: https://plotly.com/python/line-charts/
[29] Dash App: https://dash.plotly.com/
[30] 散點圖: https://plotly.com/python/line-and-scatter/
[31] timesData.csv: https://www.kaggle.com/code/kanncaa1/plotly-tutorial-for-beginners/input?select=timesData.csv
[32] 分布圖: https://stackoverflow.com/questions/70328489/create-plotly-distplot-charts-in-plotly-express
[33] Pokemon數(shù)據(jù)集: https://www.kaggle.com/datasets/rounakbanik/pokemon
[34] 自定義帶狀圖: https://community.plotly.com/t/how-to-change-size-of-point-in-px-strip-plot/70506
[35] 群體圖: https://stackoverflow.com/questions/61493460/swarm-plots-in-plotly-plotly-express
[36] 極坐標條形圖: https://plotly.com/python/wind-rose-charts/
[37] 在 plotly.express 中創(chuàng)建填充輪廓圖: https://github.com/plotly/plotly.py/issues/2071#top
[38] heart.csv: https://www.kaggle.com/datasets/arezaei81/heartcsv
[39] sklearn.datasets.make_classification: https://scikit-learn.org/1.5/modules/generated/sklearn.datasets.make_classification.html
[40] 甘特圖: https://stackoverflow.com/questions/73247210/how-to-plot-a-gantt-chart-using-timesteps-and-not-dates-using-plotly
[41] KDE Histogram2dContour plot: https://community.plotly.com/t/overlaying-grid-over-contour-graph/38709
[42] 平行坐標圖: https://plotly.com/python/parallel-coordinates-plot/
[43] 平行類別圖: https://plotly.com/python/parallel-categories-diagram/
[44] Consumer_Complaints.csv: https://www.kaggle.com/code/rajacsp/eda-and-visualization-heatmap-plotly-donutplot/input
[45] kc_house_data.csv數(shù)據(jù)集: https://www.kaggle.com/datasets/shivachandel/kc-house-data
[46] px.choropleth為數(shù)據(jù)集: https://www.geeksforgeeks.org/choropleth-maps-using-plotly-in-python/
[47] 2011_us_ag_exports.csv: https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv
[48] cv2.imread(): https://www.geeksforgeeks.org/how-to-display-image-using-plotly/