【matplotlib 實戰】--南丁格爾玫瑰圖

来源:https://www.cnblogs.com/wang_yb/archive/2023/10/16/17767021.html
-Advertisement-
Play Games

南丁格爾玫瑰圖是一種用極坐標下的柱狀圖或堆疊柱狀圖來展示數據的圖表。 雖然南丁格爾玫瑰圖外觀類似餅圖,但是表示數據的方式不同,它是以半徑來表示數值的,而餅圖是以扇形的弧度來表達數據的。 所以,南丁格爾玫瑰圖在視覺上會誇大數據的比例,因為半徑和麵積之間是平方關係。因此,當需要對比非常相近的數值時,適當 ...


南丁格爾玫瑰圖是一種用極坐標下的柱狀圖或堆疊柱狀圖來展示數據的圖表。

雖然南丁格爾玫瑰圖外觀類似餅圖,但是表示數據的方式不同,它是以半徑來表示數值的,
而餅圖是以扇形的弧度來表達數據的。

所以,南丁格爾玫瑰圖在視覺上會誇大數據的比例,因為半徑和麵積之間是平方關係。
因此,當需要對比非常相近的數值時,適當的誇大有助於區分數據,但在追求數據準確性時,玫瑰圖可能不是最佳選擇。

據說,南丁格爾玫瑰圖由統計學家和醫學改革家佛羅倫薩‧南丁格爾在克裡米亞戰爭期間創造,
用於反映軍醫院的季節性死亡率,從而推動醫院條件的改善。

1. 主要元素

南丁格爾玫瑰圖的主要元素包括:

  1. 扇形:每個扇形代表一個類別或分組,其面積大小表示該類別或分組的數值大小。
  2. 半徑軸:扇形的半徑表示數據的大小,半徑越長表示數值越大。
  3. 圖例:圖例是餅圖的一部分,用於解釋每個餅片所代表的含義,幫助觀察者理解圖表。
  4. 標簽:可在每個扇形上方或內部添加標簽,標註該類別或分組的名稱或數值,幫助人們更好地理解數據。

圖片來自 antv 官網

2. 適用的場景

南丁格爾玫瑰圖適用的場景包括:

  • 數據分佈比較:比較不同類別或分組之間的數據分佈情況,例如比較不同產品的銷售量或不同地區的人口分佈。
  • 百分比展示:展示各類別或分組所占的百分比大小,特別適用於展示相對比例的數據。
  • 強調特定數據:通過扇形的面積和顏色等元素使其更加顯眼和易於被註意到。
  • 增強視覺吸引力:南丁格爾玫瑰圖具有獨特的視覺效果,可以吸引觀眾的註意力,適用於需要突出表達的場合。

3. 不適用的場景

南丁格爾玫瑰圖不適用的場景包括:

  • 連續數據分佈:南丁格爾玫瑰圖適用於展示離散的數據分佈情況,不適用於展示連續數據的分佈情況,例如時間序列數據。
  • 多變數比較:如果需要比較多個變數之間的關係,南丁格爾玫瑰圖可能不夠直觀和有效。
  • 大量數據展示:如果數據量過大,可能會導致扇形過小,難以辨認和理解。
  • 數據精確度要求高:南丁格爾玫瑰圖的可視化效果更多地強調數據分佈的趨勢和相對大小,不適合展示具有高精確度要求的數據。

4. 分析實戰

本次使用 王者榮耀KPL 2023年春季賽的數據,分析各個戰隊的排名和勝率。

4.1. 數據來源

數據來自王者榮耀官方網站,整理好的數據下載地址:
https://databook.top/wzry/2023-spring

本次分析使用其中 各個戰隊的相關數據:league-2023春季賽.csv

fp = "d:/share/data/league-2023春季賽.csv"

df = pd.read_csv(fp)
df

image.png

4.2. 數據清理

原始數據中,欄位比較多,提取前10名的戰隊,用南丁格爾玫瑰圖分析其勝率情況。

key = "勝率"

data = df.sort_values("排名")
data = data.reset_index()

#提取前10名,只保留 戰隊 和 勝率 2個欄位
data = data.loc[:9, ["戰隊", key]]

#勝率欄位轉換為 float 類型
data[key] = data[key].str.replace("%", "")
data[key] = data[key].astype("float")

data

image.png

4.3. 分析結果可視化

matplotlib 中沒有提供專門繪製南丁格爾玫瑰圖的介面,我們可以用極坐標系下的柱狀圖來模擬。

with plt.style.context("seaborn-v0_8"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 1, 1], polar=True)
    ax.set_theta_offset(np.pi/2)
    ax.set_theta_direction(-1)
    ax.set_rlabel_position(0) 

    n = len(data)
    # 每個數據的角度
    angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
    # 繪製用到的數據
    radius = np.array(data[key].tolist())

    ax.yaxis.set_major_locator(plt.NullLocator())

    # x軸刻度顯示戰隊名稱
    ax.set_xticks(angle, data["戰隊"])

    # 中間空出一個孔
    ax.set_ylim(-10, max(data[key]))

    ax.bar(angle, radius, color=plt.cm.tab10.colors, width=0.62)

image.png

從分析結果可以看出,第一名重慶狼隊的勝率明顯高出其他的戰隊,而其他戰隊的勝率差別不大。

說明目前 王者榮耀KPL聯盟中,各個戰隊的實力比較接近,比賽會非常精彩。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通常情況下我們在編寫套接字通信程式時都會實現一收一發的通信模式,當客戶端發送數據到服務端後,我們希望服務端處理請求後同樣返回給我們一個狀態值,並以此判斷我們的請求是否被執行成功了,另外增加收發同步有助於避免數據包粘包問題的產生,在多數開發場景中我們都會實現該功能。Socket粘包是指在使用TCP協議... ...
  • 目錄Java8 介面初始化的幾種場景通過介面實現類的方式實現代碼實現通過匿名內部類的來實現代碼實現通過JDK8 雙冒號用法方式代碼實現通過箭頭函數Lambda表達式的方式代碼實現將介面作為方法參數代碼實現 Java8 介面初始化的幾種場景 通過介面實現類的方式實現 代碼實現 public inter ...
  • 數組(Array) 數組(Array)應該是最基礎的數據結構之一,它由相同類型的元素組成的集合,並按照一定的順序存儲在記憶體中。每個元素都有一個唯一的索引,可以用於訪問該元素。 // java 數組示例 int[] numbers1 = {2,0,2,3,9,23}; // 或者 int[] numb ...
  • 歡迎訪問我的GitHub 這裡分類和彙總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos 本篇概覽 本文是《client-go實戰》系列的第八篇,主要內容是新建一個golang工程,用於管理代碼,後面整個系列的代碼都會保存在這個工程中 工程結構 ...
  • Spring Boot 2.0 中的註解 @ModelAttribute 有什麼作用呢? 通常情況下,我們會將 @ModelAttribute 註解放置在 Controller 中的某個方法上,那麼,如果您在請求這個 Controller 中定義的 URI 時,會首先調用這個被註解的方法,並將該方法 ...
  • 哈嘍兄弟們,抖音現在有JS加密,以前的方法爬不了餓了,今天來實現一下某音短視頻的JS逆向解析。 知識點 動態數據抓包`在這裡插入代碼片`requests發送請求X-Bogus 參數逆向 環境模塊 python 3.8 運行代碼pycharm 2022.3 輔助敲代碼requests pip inst ...
  • 作者:小牛呼嚕嚕 | https://xiaoniuhululu.com 電腦內功、源碼解析、科技故事、項目實戰、面試八股等更多硬核文章,首發於公眾號「小牛呼嚕嚕」 目錄什麼是冪等性?為什麼需要保證冪等性?介面冪等設計和防止重覆提交可以等同嗎?常用保證冪等性的措施先select再insert資料庫 ...
  • 通過本文可以收穫:google gtest急速入門、google gtest資源網站。 google gtest是什麼 google gtest是谷歌開源的c++單元測試框架,非常的好用。 起碼個人感覺和spring boot自帶的測試框架功能差不太多。 安裝 略過,請參考:GitHub - goo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...