一、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-hant/n/159833.html
微信掃一掃
支付寶掃一掃