支持199IT發展可加入知識交流群(10K+用戶),最有價值數據分享!點擊...

2020-11-22 199IT

Tips:

  • 本文原文部分代碼有不準確的地方,已進行修改;
  • 所有正確的原始碼,已整合到 jupyter notebook 文件中;
  • 運行本文代碼,除了安裝 matplotlib 和 seaborn 可視化庫外,還需要安裝其他的一些輔助可視化庫,已在代碼部分作標註,具體內容請查看下面文章內容。

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

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

有效圖表的重要特徵:

  • 在不歪曲事實的情況下傳達正確和必要的信息。
  • 設計簡單,您不必太費力就能理解它。
  • 從審美角度支持信息而不是掩蓋信息。
  • 信息沒有超負荷。

準備工作

在代碼運行前先引入下面的設置內容。 當然,單獨的圖表,可以重新設置顯示要素。

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

1. 散點圖(Scatter plot)

散點圖是用於研究兩個變量之間關係的經典的和基本的圖表。 如果數據中有多個組,則可能需要以不同顏色可視化每個組。 在 matplotlib 中,您可以使用 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)

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

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)

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

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

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

16. 棒棒糖圖 (Lollipop Chart)

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

17. 包點圖 (Dot Plot)

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

18. 坡度圖 (Slope Chart)

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

19. 啞鈴圖 (Dumbbell Plot)

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

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個或更多分類變量的計數分布。

31. 華夫餅圖 (Waffle Chart)

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

註:需要安裝 pywaffle 庫

32. 餅圖 (Pie Chart)

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

33. 樹形圖 (Treemap)

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

註:需要安裝 squarify 庫

34. 條形圖 (Bar Chart)

條形圖是基於計數或任何給定指標可視化項目的經典方式。 在下面的圖表中,我為每個項目使用了不同的顏色,但您通常可能希望為所有項目選擇一種顏色,除非您按組對其進行著色。 顏色名稱存儲在下面代碼中的all_colors中。 您可以通過在 plt.plot()中設置顏色參數來更改條的顏色。

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)

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

47. 樹狀圖 (Dendrogram)

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

48. 簇狀圖 (Cluster Plot)

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

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

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

50. 平行坐標 (Parallel Coordinates)

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

原文標題:

Top 50 matplotlib Visualizations – The Master Plots (with full python  code)

原文連結:

https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/

相關焦點

  • 歡迎加入共同大數據知識星球:海量資源一站式獲取!
    交流 學習 合作 分享分享優質內容,讓閱讀有價值  願行者智,並智者行  土木工程建築學專業全套159門視頻教程橋梁工程材料力學自學素材最全Excel教程匯總,讓你一個月成為Excel大神!230套Excel可視化圖表模板大禮包,讓數據美如畫!
  • 2018數據更新:人類發展指數和指標報告
    聯合國開發計劃署14日發布的「2018數據更新:人類發展指數和指標」顯示,人類發展水平總體呈上升趨勢,但不均衡發展仍是制約因素。
  • 極光大數據:2018年電商行業研究報告 | 網際網路數據資訊網-199IT |...
    極光大數據(NASDAQ:JG)發布《2018年電商行業研究報告》,結合電商大數據以及電商用戶調研數據,從行業運營情況、用戶評價、用戶粘性、用戶價值、雙十一情況、用戶畫像等多個方面綜合分析電商行業的情況。
  • 我做知識星球的一些心得和數據
    舉一個例子,一家網際網路家裝行業的公司,運營人員每天跟用戶在微信群裡互動,往這些群裡發布信息、調動氣氛、管理髮言,最後還需要將這些群裡有價值的討論記錄匯總反饋。   一開始還行,慢慢地人越來越多,群越來越多,到了幾十上百個群時,就成了不可能完成的任務。
  • 小遊戲分享變成微信牛皮癬 300人群被逼成殭屍群
    小遊戲分享變成微信牛皮癬是不是你也開始發現,曾幾何時大家交流的微信群慢慢變了味,沒有有趣的表情包,也沒有活躍的發言,只有一條接一條的微信小遊戲分享。這些方塊大的分享連結,就像往日牆上的牛皮癬廣告,讓人看著就有想退群的衝動。
  • 如何讓用戶研究變得重要 | 網際網路數據資訊網-199IT | 中文網際網路...
    可我壓根不知道這研究應該從哪裡開始,我甚至不知道到底哪些基礎是我不知道的。這一把我的賭注很大,我需要向所有人展示基礎研究的價值,這樣我才有機會多次進行這類研究。可如何才能保證研究成果能夠讓每個人都認真聽下去並從心底認可呢?我意識到答案其實很簡單。我只需要問問每個人他們最關心的內容到底是什麼?(這裡是指在我們項目背景下)。
  • 199元就能買到氮化鎵快充+充電寶新物種!
    倍思則更騷了,將充電寶和業界最熱的GaN技術整合到一起,提升充電功率到45W的同時,又加入了一塊10000mAh的充電寶。45W作為PD的黃金檔位,可以充很多的筆記本電腦;10000mAh的電芯也是移動電源的黃金容量,不多不少剛剛好,非常適合出門便攜使用。
  • 獨家:刷爆你微信群的京東東小店是怎麼做到的?
    - 從銷售來源分布看,中腰部量級會多一些,頭部量級偏少,思想落地執行的階段才是真正的價值創造和實現的地方。- 用戶都會做「賺」和「省」的行為,從消費型消費者走向分享型消費者。從東小店數據看,每個新店主在第一個月會平均邀請 400 人加入開店。
  • 得到、知乎和喜馬拉雅搶佔知識付費風口,行業還有哪些機會?
    因此,我們以2017騰訊財報公布的微信月活和微信支付用戶數量來估算,並採用「得到」訂閱專欄的定價,假設用戶年均消費為199元的前提下,知識付費年市場規模約為480億。(2)中產階級根據CNNIC數據顯示,2015年2.67億手遊用戶有46.6%為移動遊戲付費。
  • 六種社群類型的差異化分析
    這些群有一個共同的特徵,就是群員幾乎都是消費者,他們就是為了領取福利和消費。他們的消費意願極強,而且最大的吸引力就是優惠力度。而這樣的群,群用戶之間是沒必要產生任何聯繫的,它其實還是一對一的傳播。好比大家都要去商場買東西,人雖然聚在一起,但沒必要認識,也很難互動。那麼這樣的群,唯一考核指標,是領福利到消費的數據。群裡面,是否有聊天,不是必須關注的事項。
  • 家庭教育市場:微信生態解決用戶長尾需求
    公眾號和小程序主要用於連接某一產品服務和其他相關產品信息,比如用戶通過「爸媽學前班」這一網綜產品了解到「有養」的微信公眾號,進入後可了解「有養」其他產品服務,如該網綜相關的「明星育兒同款課」和「養娃工具包」。公眾號和微信群主要用於連接用戶與產品信息,尤其是某一公眾號或微信群的關注者們都往往是具有類似的特徵,向特定人群推送產品信息更有助於精準營銷。
  • 實戰課堂丨大數據關係信息挖掘:知識圖譜應用案例分享
    負責聯想創投大數據機器智能產品和行業應用模型開發。擁有多年高性能計算、大數據、人工智慧行業經驗 。畢業於美國紐約州立大學,曾在IBM認知團隊任行業解決方案專家。榮之聯實戰課堂第4期的《解讀大數據分析:新技術,新實踐》主題沙龍上,聯想創投(香港)機器智能實驗室高級產品經理錢廣銳跟大家分享了《大數據關係信息挖掘:知識圖譜應用案例分享》。
  • 「飛豬」產品分析報告:分享迭代意見與發展建議
    此外,攜程的用戶社區主頁內容更加多元一點,比較有特色的是「旅行成就」版塊,可以讓用戶形成目的地打卡的習慣;成就版塊之上有內容數據的展示;頭像有加V圖標,形成大V粉絲效應;內容部分的分類有兩欄,旅拍部分會產生地點標籤,方便用戶查看想要的內容。內容單列呈現,並且有明顯的點讚、收藏、分享圖標。飛豬的用戶主頁模塊設計更加簡潔,內容雙列呈現,但只有點讚圖標,不能一步分享。
  • 大咖群分享 | 淺談鍍鋅的五彩鈍化
    報名方式有兩種,請任意選擇報名方式1:繳納報名費49.9元即可報名報名方式2:1、先加群管理員;2、轉發本圖到朋友圈,不能設限。轉發後截圖給到群管理;3、由群管理審核後拉入周工的分享群。如需加入周老師的群長按指紋掃一掃,加助手微信號驗證時請寫:629
  • 大數據的七大核心具體價值
    隨著移動網際網路的飛速發展,信息的傳輸日益方便快捷,端到端的需求也日益突出,縱觀整個移動網際網路領域,數據已被認為是繼雲計算、物聯網之後的又一大顛覆性的技術性革命,毋庸置疑,大數據市場是待挖掘的金礦,其價值不言而喻。可以說誰能掌握和合理運用用戶大數據的核心資源,誰就能在接下來的技術變革中進一步發展壯大。
  • 如何將數據科學與商業結合起來 | 網際網路數據資訊網-199IT | 中文...
    非常感謝有這次機會跟大家分享我在過去十年裡面的經驗,也非常感謝經管之家組織這次很好的活動。而且前面聽到了在座的各位行業專家的分享,其實我今天講的東西要重複前面幾位專家講的東西。在過去十二年我在美國工作的時間,學到最重要的東西就是數據決策,我們今天做的只是重複古代人的再次決策,使我們的規模變得更大化。
  • 社群空間:小U管家「重磅」功能,90%的微信群都在使用!
    電商、廣告、搜索等渠道能帶來的有效轉化率越來越低,圈子經濟崛起,QQ、微信等社群成為商家與客戶溝通最短、最廉價卻最可能帶來直接銷售的途徑。正如移動網際網路取代傳統網際網路是必然趨勢,社群營銷取代傳統營銷也是時代潮流。2017是社群時代,如果你比別人先走一步,也意味著提前攫取利潤。一、微信建群有哪些作用?
  • 小U管家-微信群管家輕鬆管理5000社群,省時又省力!
    如果有,那一定是你的運營不夠精準不夠好!     接下來,大咖將免費分享這套價值1000元的運營課程!這次你們真是賺翻了哦!     以下為語音分享實錄整理     我叫肖肖,擅長社群運營、目前是健康行業龍頭公司運營負責人,很高興受邀進行經驗分享。自微信興起之後,社群就成為一個新型的營銷場地,潛力巨大,越來越多的企業投入了這個市場。