用 Python 做雷達圖

一、Python雷達圖代碼

雷達圖,也稱為蛛網圖或星形圖,是一種以同心多邊形將幾個變數的數據繪製在同一張圖表上,以便於進行比較和分析的數據可視化方式。Python提供了多個庫來繪製雷達圖,包括Matplotlib、Bokeh和Plotly等。

import numpy as np
import matplotlib.pyplot as plt

# 設置數據標籤
categories = ['人力資源', '營銷', '技術', '財務', '管理']
N = len(categories)

# 設置數據值
vals = [4, 3, 2, 1, 5]
vals += vals[:1]

# 計算每個角的弧度
angles = [n / float(N) * 2 * np.pi for n in range(N)]
angles += angles[:1]

# 繪製多邊形,連接數據點
ax = plt.subplot(111, polar=True)
plt.xticks(angles[:-1], categories, color='grey', size=8)
ax.plot(angles, vals, linewidth=1, linestyle='solid')
ax.fill(angles, vals, 'b', alpha=0.1)
plt.show()

上述代碼使用Matplotlib庫繪製了一個簡單的雷達圖,該圖表顯示了幾個變數的數據值,包括人力資源、營銷、技術、財務和管理。可以看到,Python的繪圖庫非常容易使用,對於任意的數據可視化任務都非常有用。

二、Python畫雷達圖代碼

除了使用Matplotlib庫,Python還提供了其他庫來繪製雷達圖。下面是一個使用Bokeh庫編寫的繪製雷達圖的示例代碼:

from math import pi
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource

# 創建數據集
data = {'angles': [0, pi/2, pi, 3*pi/2, 2*pi],
        'values': [1.2, 2.5, 3.7, 0.8, 2.1]}
df = pd.DataFrame(data)

# 添加第一個角度值以完成閉環
df = pd.concat([df, pd.DataFrame({'angles':[df['angles'].iloc[0]],
                                   'values':[df['values'].iloc[0]]})])

# 創建Figure對象
p = figure(title="雷達圖", x_range=(-1.2, 1.2), y_range=(-1.2, 1.2),
           plot_width=400, plot_height=400)

# 繪製雷達圖
p.patch(x=df['values']*np.cos(df['angles']),
        y=df['values']*np.sin(df['angles']),
        fill_alpha=0.4, line_width=2)

output_file("radar.html")
show(p)

該示例代碼使用Bokeh庫來繪製雷達圖,該圖表顯示了一組固定半徑的數據點,它們繞著中心點分布。這個示例代碼中的數據集是一個直接使用Python數據結構創建的小數據集,但是實際上可以使用各種數據存儲方式來創建Bokeh數據源。

三、Python繪製雷達圖函數

將繪製雷達圖的代碼封裝成一個函數可以很方便地重複使用,下面是一個可以在Python中繪製雷達圖的簡單函數:

import matplotlib.pyplot as plt
import numpy as np

def radar_chart(categories, data, title):
    # 計算數據值並重複第一個數據點以閉環
    N = len(categories)
    data = np.concatenate((data,[data[0]]))
    angles = np.linspace(0, 2*np.pi, N, endpoint=False)
    angles = np.concatenate((angles,[angles[0]]))

    # 繪製多邊形
    fig = plt.figure()
    ax = fig.add_subplot(111, polar=True)
    ax.plot(angles, data, 'o-', linewidth=2)
    ax.fill(angles, data, alpha=0.25)
    ax.set_thetagrids(angles * 180/np.pi, categories)
    plt.title(title, va='bottom')

    # 顯示結果
    plt.show()

上述函數使用Matplotlib庫繪製雷達圖,參數categories表示分類變數,data表示每個分類變數對應的數據,title表示圖表的標題。通過計算數據值和角度值,並且連接數據點來繪製多邊形,最後添加類別標籤,這個函數可以方便地繪製可視化效果良好的雷達圖。

四、Python雷達圖詳解

雷達圖是一種多維數據可視化技術,可以用於顯示多個變數之間的關係及其對整體的貢獻率。它由多個同心多邊形組成,每個多邊形代表一個變數,並且大小和數值成正比。同一張圖表上的每個多邊形通過連接每個角上的數據點來繪製。數據點的位置由所對應的幾個變數的數值決定。

使用Python繪製雷達圖的主要步驟如下:

  • 準備數據:準備需要繪製的數據,包括類別變數、數值、標題等。
  • 計算角度和數據值:計算每個角的角度和每個變數的數據值。
  • 繪製多邊形:使用Matplotlib、Bokeh或Plotly等庫來繪製雷達圖。

Python的Matplotlib庫提供了一個方便的函數來繪製雷達圖,即matplotlib.pyplot.polar()。這個函數使用極坐標系繪製出同心多邊形。由於雷達圖的數據通常是非負的,因此可以使用填充區域來表示數據。可以使用matplotlib.pyplot.fill()函數來實現這一點。

Bokeh和Plotly等數據可視化庫也支持雷達圖的繪製,它們的優點是帶有互動式和動態效果,能夠更好地展示數據和突出主題。Bokeh庫使用Python作為繪圖語言,提供了一個圖表對象,使得用戶可以在Web瀏覽器中交互地探索數據。Plotly庫則是一個互動式的繪圖庫,支持在線繪圖和展示,支持多種繪圖類型,包括2D和3D可視化。

五、Python生成雷達圖

Python提供了多個庫來生成雷達圖,包括Matplotlib、Bokeh和Plotly等。這些庫都具有很高的可自定義性,可以滿足不同用戶的需求。

使用Python繪製雷達圖的最佳方法取決於數據類型和要表現的信息。對於繪製簡單的雷達圖,可以使用Matplotlib庫提供的簡便函數。如果需要將雷達圖嵌入Python Web應用程序中或者需要創造更加豐富複雜的數據可視化效果,則需要使用先進的數據可視化工具。

最後,Python的雷達圖表現出了數據的維度和變化,很好的解釋了數據之間的關係。Python通過繪圖庫快速可靠的提供自己能力,對於數據可視化工作者來說,它是一個強大而方便的工具,可以用各種繪圖庫實現數據可視化的需求。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159833.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-20 00:16
下一篇 2024-11-20 00:16

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論