python 的 matplotlib 和 seaborn 圖標 50個最有價值的數據可視化圖表(推薦收藏)

本文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。這些圖表列表允許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。

這些圖表根據可視化目標的 7 個不同情景進行分組。例如,如果要想象兩個變量之間的關係,請查看“關聯”部分下的圖表。或者,如果您想要顯示值如何隨時間變化,請查看“變化”部分,依此類推。

有效圖表的重要特徵:

在不歪曲事實的情況下傳達正確和必要的信息。

設計簡單,您不必太費力就能理解它。

從審美角度支持信息而不是掩蓋信息。

信息沒有超負荷。

01 關聯(Correlation)

關聯圖表用於可視化 2 個或更多變量之間的關係。也就是說,一個變量如何相對於另一個變化。

1. 散點圖(Scatter plot)

散點圖是用於研究兩個變量之間關係的經典的和基本的圖表。如果數據中有多個組,則可能需要以不同顏色可視化每個組。您可以使用 plt.scatterplot() 方便地執行此操作。

2. 帶邊界的氣泡圖(Bubble plot with Encircling)

有時,您希望在邊界內顯示一組點以強調其重要性。在這個例子中,你從數據框中獲取記錄,並用 encircle() 來使邊界顯示出來。

3. 帶線性迴歸最佳擬合線的散點圖(Scatter plot with linear regression line of best fit)

如果你想了解兩個變量如何相互改變,那麼最佳擬合線就是常用的方法。下圖顯示了數據中各組之間最佳擬合線的差異。要禁用分組並僅爲整個數據集繪製一條最佳擬合線,請從 sns.lmplot() 調用中刪除 hue ='cyl' 參數。

針對每列繪製線性迴歸線或者,可以在其每列中顯示每個組的最佳擬合線。可以通過在 sns.lmplot() 中設置 col=groupingcolumn 參數來實現,如下:

4. 抖動圖(Jittering with stripplot)

通常,多個數據點具有完全相同的 X 和 Y 值。結果,多個點繪製會重疊並隱藏。爲避免這種情況,請將數據點稍微抖動,以便您可以直觀地看到它們。

使用 seaborn 的 stripplot() 很方便實現這個功能。

5. 計數圖(Counts Plot)

避免點重疊問題的另一個選擇是增加點的大小,這取決於該點中有多少點。因此,點的大小越大,其周圍的點的集中度越高。

6. 邊緣直方圖(Marginal Histogram)

邊緣直方圖具有沿 X 和 Y 軸變量的直方圖。這用於可視化 X 和 Y 之間的關係以及單獨的 X 和 Y 的單變量分佈。這種圖經常用於探索性數據分析(EDA)。

7. 邊緣箱形圖(Marginal Boxplot)

邊緣箱圖與邊緣直方圖具有相似的用途。然而,箱線圖有助於精確定位 X 和 Y 的中位數、第 25 和第 75 百分位數。

8. 相關圖(Correllogram)

相關圖用於直觀地查看給定數據框(或二維數組)中所有可能的數值變量對之間的相關度量。

9. 矩陣圖(Pairwise Plot)

矩陣圖是探索性分析中的最愛,用於理解所有可能的數值變量對之間的關係。它是雙變量分析的必備工具。

02 偏差(Deviation)

10. 發散型條形圖(Diverging Bars)

如果您想根據單個指標查看項目的變化情況,並可視化此差異的順序和數量,那麼散型條形圖(Diverging Bars)是一個很好的工具。它有助於快速區分數據中組的性能,並且非常直觀,並且可以立即傳達這一點。

11. 發散型文本(Diverging Texts)

發散型文本(Diverging Texts)與發散型條形圖(Diverging Bars)相似,如果你想以一種漂亮和可呈現的方式顯示圖表中每個項目的價值,就可以使用這種方法。

12. 發散型包點圖(Diverging Dot Plot)

發散型包點圖(Diverging Dot Plot)也類似於發散型條形圖(Diverging Bars)。然而,與發散型條形圖(Diverging Bars)相比,條的缺失減少了組之間的對比度和差異。

13. 帶標記的發散型棒棒糖圖(Diverging Lollipop Chart with Markers)

帶標記的棒棒糖圖通過強調您想要引起注意的任何重要數據點並在圖表中適當地給出推理,提供了一種對差異進行可視化的靈活方式。

14. 面積圖(Area Chart)

通過對軸和線之間的區域進行着色,面積圖不僅強調峯和谷,而且還強調高點和低點的持續時間。高點持續時間越長,線下面積越大。

03 排序(Ranking)

15. 有序條形圖(Ordered Bar Chart)

有序條形圖有效地傳達了項目的排名順序。但是,在圖表上方添加度量標準的值,用戶可以從圖表本身獲取精確信息。

16. 棒棒糖圖(Lollipop Chart)

棒棒糖圖表以一種視覺上令人愉悅的方式提供與有序條形圖類似的目的。

17. 包點圖(Dot Plot)

包點圖表傳達了項目的排名順序,並且由於它沿水平軸對齊,因此您可以更容易地看到點彼此之間的距離。

18. 坡度圖(Slope Chart)

坡度圖最適合比較給定人/項目的“前”和“後”位置。

19. 啞鈴圖(Dumbbell Plot)

啞鈴圖表傳達了各種項目的“前”和“後”位置以及項目的等級排序。如果您想要將特定項目/計劃對不同對象的影響可視化,那麼它非常有用。

04 分佈(Distribution)

20. 連續變量的直方圖(Histogram for Continuous Variable)

直方圖顯示給定變量的頻率分佈。下面的圖表示基於類型變量對頻率條進行分組,從而更好地瞭解連續變量和類型變量。

21. 類型變量的直方圖(Histogram for Categorical Variable)

類型變量的直方圖顯示該變量的頻率分佈。通過對條形圖進行着色,可以將分佈與表示顏色的另一個類型變量相關聯。

22. 密度圖(Density Plot)

密度圖是一種常用工具,用於可視化連續變量的分佈。通過“響應”變量對它們進行分組,您可以檢查 X 和 Y 之間的關係。以下情況用於表示目的,以描述城市裏程的分佈如何隨着汽缸數的變化而變化。

23. 直方密度線圖(Density Curves with Histogram)

帶有直方圖的密度曲線彙集了兩個圖所傳達的集體信息,因此您可以將它們放在一個圖中而不是兩個圖中。

24. Joy Plot

Joy Plot 允許不同組的密度曲線重疊,這是一種可視化大量分組數據的彼此關係分佈的好方法。它看起來很悅目,並清楚地傳達了正確的信息。它可以使用基於 matplotlib 的 joypy 包輕鬆構建。

注:需要安裝 joypy 庫

25. 分佈式包點圖(Distributed Dot Plot)

分佈式包點圖顯示按組分割的點的單變量分佈。點數越暗,該區域的數據點集中度越高。通過對中位數進行不同着色,組的真實定位立即變得明顯。

26. 箱形圖(Box Plot)

箱形圖是一種可視化分佈的好方法,記住中位數、第 25 個第 45 個四分位數和異常值。但是,您需要注意解釋可能會扭曲該組中包含的點數的框的大小。因此,手動提供每個框中的觀察數量可以幫助克服這個缺點。

例如,左邊的前兩個框具有相同大小的框,即使它們的值分別是 5 和 47。因此,寫入該組中的觀察數量是必要的。

27. 包點+箱形圖(Dot+Box Plot)

包點+箱形圖(Dot+Box Plot)傳達類似於分組的箱形圖信息。此外,這些點可以瞭解每組中有多少數據點。

28. 小提琴圖(Violin Plot)

小提琴圖是箱形圖在視覺上令人愉悅的替代品。小提琴的形狀或面積取決於它所持有的觀察次數。但是,小提琴圖可能更難以閱讀,並且在專業設置中不常用。

29. 人口金字塔(Population Pyramid)

人口金字塔可用於顯示由數量排序的組的分佈。或者它也可以用於顯示人口的逐級過濾,因爲它在下面用於顯示有多少人通過營銷渠道的每個階段。

30. 分類圖(Categorical Plots)

由 seaborn 庫 提供的分類圖可用於可視化彼此相關的 2 個或更多分類變量的計數分佈。

05 組成(Composition)

31. 華夫餅圖(Waffle Chart)

可以使用 pywaffle 包 創建華夫餅圖,並用於顯示更大羣體中的組的組成。

注:需要安裝 pywaffle 庫

32. 餅圖(Pie Chart)

餅圖是顯示組成的經典方式。然而,現在通常不建議使用它,因爲餡餅部分的面積有時會變得誤導。因此,如果您要使用餅圖,強烈建議明確記下餅圖每個部分的百分比或數字。

33. 樹形圖(Treemap)

樹形圖類似於餅圖,它可以更好地完成工作而不會誤導每個組的貢獻。

注:需要安裝 squarify 庫

34. 條形圖(Bar Chart)

條形圖是基於計數或任何給定指標可視化項目的經典方式。在下面的圖表中,我爲每個項目使用了不同的顏色,但您通常可能希望爲所有項目選擇一種顏色,除非您按組對其進行着色。

06 變化(Change)

35. 時間序列圖(Time Series Plot)

時間序列圖用於顯示給定度量隨時間變化的方式。在這裏,您可以看到 1949 年 至 1969 年間航空客運量的變化情況。

36. 帶波峯波谷標記的時序圖(Time Series with Peaks and Troughs Annotated)

下面的時間序列繪製了所有峯值和低谷,並註釋了所選特殊事件的發生。

37. 自相關和部分自相關圖(Autocorrelation (ACF) and Partial Autocorrelation (PACF) Plot)

自相關圖(ACF圖)顯示時間序列與其自身滯後的相關性。每條垂直線(在自相關圖上)表示系列與滯後 0 之間的滯後之間的相關性。圖中的藍色陰影區域是顯着性水平。那些位於藍線之上的滯後是顯着的滯後。

那麼如何解讀呢?

對於空乘旅客,我們看到多達 14 個滯後跨越藍線,因此非常重要。這意味着,14 年前的航空旅客交通量對今天的交通狀況有影響。

PACF 在另一方面顯示了任何給定滯後(時間序列)與當前序列的自相關,但是刪除了滯後的貢獻。

38. 交叉相關圖(Cross Correlation plot)

交叉相關圖顯示了兩個時間序列相互之間的滯後。

39. 時間序列分解圖(Time Series Decomposition Plot)

時間序列分解圖顯示時間序列分解爲趨勢,季節和殘差分量。

40. 多個時間序列(Multiple Time Series)

您可以繪製多個時間序列,在同一圖表上測量相同的值,如下所示。

41. 使用輔助 Y 軸來繪製不同範圍的圖形(Plotting with different scales using secondary Y axis)

如果要顯示在同一時間點測量兩個不同數量的兩個時間序列,則可以在右側的輔助 Y 軸上再繪製第二個系列。

42. 帶有誤差帶的時間序列(Time Series with Error Bands)

如果您有一個時間序列數據集,每個時間點(日期/時間戳)有多個觀測值,則可以構建帶有誤差帶的時間序列。您可以在下面看到一些基於每天不同時間訂單的示例。另一個關於 45 天持續到達的訂單數量的例子。

在該方法中,訂單數量的平均值由白線表示。並且計算 95% 置信區間並圍繞均值繪製。

43. 堆積面積圖(Stacked Area Chart)

堆積面積圖可以直觀地顯示多個時間序列的貢獻程度,因此很容易相互比較。

44. 未堆積的面積圖(Area Chart UnStacked)

未堆積面積圖用於可視化兩個或更多個系列相對於彼此的進度(起伏)。在下面的圖表中,您可以清楚地看到隨着失業中位數持續時間的增加,個人儲蓄率會下降。未堆積面積圖表很好地展示了這種現象。

45. 日曆熱力圖(Calendar Heat Map)

與時間序列相比,日曆地圖是可視化基於時間的數據的備選和不太優選的選項。雖然可以在視覺上吸引人,但數值並不十分明顯。然而,它可以很好地描繪極端值和假日效果。

注:需要安裝 calmap 庫

46. 季節圖(Seasonal Plot)

季節圖可用於比較上一季中同一天(年/月/周等)的時間序列。

07 分組(Groups)

47. 樹狀圖(Dendrogram)

樹形圖基於給定的距離度量將相似的點組合在一起,並基於點的相似性將它們組織在樹狀鏈接中。

48. 簇狀圖(Cluster Plot)

簇狀圖(Cluster Plot)可用於劃分屬於同一羣集的點。下面是根據 USArrests 數據集將美國各州分爲 5 組的代表性示例。此圖使用“謀殺”和“攻擊”列作爲 X 和 Y 軸。或者,您可以將第一個到主要組件用作 X 軸和 Y 軸。

49. 安德魯斯曲線(Andrews Curve)

安德魯斯曲線有助於可視化是否存在基於給定分組的數字特徵的固有分組。如果要素(數據集中的列)無法區分組(cyl),那麼這些線將不會很好地隔離,如下所示。

50. 平行座標(Parallel Coordinates)

平行座標有助於可視化特徵是否有助於有效地隔離組。如果實現隔離,則該特徵可能在預測該組時非常有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章