文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。這些圖表列表容許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。python
這些圖表根據可視化目標的 7 個不一樣情景進行分組。例如,若是要想象兩個變量之間的關係,請查看「關聯」部分下的圖表。或者,若是您想要顯示值如何隨時間變化,請查看「變化」部分,依此類推。數組
有效圖表的重要特徵:分佈式
在不歪曲事實的狀況下傳達正確和必要的信息。工具
設計簡單,您沒必要太費力就能理解它。性能
從審美角度支持信息而不是掩蓋信息。大數據
信息沒有超負荷。人工智能
01 關聯(Correlation)設計
關聯圖表用於可視化 2 個或更多變量之間的關係。也就是說,一個變量如何相對於另外一個變化。rest
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)
平行座標有助於可視化特徵是否有助於有效地隔離組。若是實現隔離,則該特徵可能在預測該組時很是有用。
本文轉自大數據分析和人工智能公衆號~~