Python中如何使用matplotlib制作雷達圖進行對比分析

這篇文章主要介紹了Python中如何使用matplotlib制作雷達圖進行對比分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計,任縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:任縣等地區(qū)。任縣做網(wǎng)站價格咨詢:028-86922220

前言

雷達圖的背景一圈一圈地像雷達,用多邊形來展現(xiàn)數(shù)據(jù)的大小,我認為比較適合用于有多種不同維度的情形,是發(fā)現(xiàn)差距的一種好工具。

Python中如何使用matplotlib制作雷達圖進行對比分析

其中「持續(xù)性」與學(xué)習(xí)的天數(shù)相關(guān),「學(xué)習(xí)量」與聽課或看書的數(shù)量相關(guān),「筆記」與筆記的數(shù)量和互動相關(guān),「知識分享」與分享轉(zhuǎn)發(fā)的次數(shù)相關(guān),「好奇心」與搜索的次數(shù)和廣度相關(guān)。

從圖中可以看出,在 2020 年的年初,我在筆記方面還比較薄弱,經(jīng)過努力,我做筆記的數(shù)量明顯增加了。

借助雷達圖,我們可以直觀地看到差距,進而通過分析,更好地進行改善。

02

接下來,我們看看用 matplotlib 畫圖的具體步驟。

首先,導(dǎo)入所需的庫,并設(shè)置中文字體和定義顏色等。

# 導(dǎo)入所需的庫
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.image as image

# 正常顯示中文標簽
mpl.rcParams['font.sans-serif'] = ['SimHei']

# 自動適應(yīng)布局
mpl.rcParams.update({'figure.autolayout': True})

# 正常顯示負號
mpl.rcParams['axes.unicode_minus'] = False

# 禁用科學(xué)計數(shù)法
pd.set_option('display.float_format', lambda x: '%.2f' % x) 

# 定義顏色,主色:藍色,輔助色:灰色,互補色:橙色
c = {'藍色':'#00589F', '深藍色':'#003867', '淺藍色':'#5D9BCF',
     '灰色':'#999999', '深灰色':'#666666', '淺灰色':'#CCCCCC',
     '橙色':'#F68F00', '深橙色':'#A05D00', '淺橙色':'#FBC171'}

其次,從 Excel 文件中讀取數(shù)據(jù),并定義畫圖用的數(shù)據(jù)。

# 數(shù)據(jù)源路徑
filepath='./data/林驥的學(xué)分構(gòu)成.xlsx'

# 讀取 Excel文件
df = pd.read_excel(filepath)

# 提取畫圖所需的數(shù)據(jù)
data0 = df.iloc[0, 2:].values
data1 = df.iloc[1, 2:].values

#提取標簽
label = np.array(df.iloc[1, 2:].index)

# 根據(jù)分數(shù)添加評級的標簽
for i, d in enumerate(data1):
    if d > 4:
        grade = 'A^+'
    elif d == 4:
        grade = 'A'
    elif d > 3:
        grade = 'B^+'
    elif d == 3:
        grade = 'B'
    else:
        grade = 'B^-'
    label[i] += '\n' + r'$\bf{' + grade + '}$'
    

# data 有幾個數(shù)據(jù),就把整圓 360° 分成幾份
angle = np.linspace(0, 2*np.pi, len(data0), endpoint=False)

# 增加第一個 angle 到所有 angle 里,以實現(xiàn)閉合
angles = np.concatenate((angle, [angle[0]]))

# 倒轉(zhuǎn)順序,以讓雷達圖順時針顯示
angles = angles[::-1]

#增加第一個 data 到所有的 data 里,以實現(xiàn)閉合
data0 = np.concatenate((data0, [data0[0]]))
data1 = np.concatenate((data1, [data1[0]]))

接下來,開始用「面向?qū)ο蟆沟姆椒ㄟM行畫圖。

# 使用「面向?qū)ο蟆沟姆椒ó媹D,定義圖片的大小
fig, ax=plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))

# 設(shè)置背景顏色
fig.set_facecolor('w')
ax.set_facecolor('w')

# 設(shè)置標題
ax.set_title('\n林驥的學(xué)分構(gòu)成及其變化\n\n', fontsize=26, loc='left', color=c['深灰色']) 

# 設(shè)置網(wǎng)格標簽
ax.set_thetagrids(angles*180/np.pi, labels=label)

# 畫雷達圖,用順時針顯示
ax.plot(angles, data0, 'o-', label=df.iloc[0, 0].strftime('%Y-%m-%d'))
ax.plot(angles, data1, 'o-', label=df.iloc[1, 0].strftime('%Y-%m-%d'))

# 設(shè)置極坐標 0° 的位置
ax.set_theta_zero_location('N') 

# 設(shè)置顯示的極徑范圍
ax.set_rlim(0, 5)

# 填充顏色
ax.fill(angles, data0, facecolor=c['淺藍色'], alpha=0.6)
ax.fill(angles, data1, facecolor=c['淺橙色'], alpha=0.6)

# 設(shè)置極徑標簽,放在第一象限的中間位置
ax.set_rlabel_position(360-360/len(data0)/2)

# 設(shè)置圖例顯示的位置
l = ax.legend(ncol=2, loc='lower center', frameon=False, borderaxespad=-3, fontsize=13)
for text in l.get_texts():
    text.set_color(c['深灰色'])
#     text.set_size(13)

# 去掉最外圍的黑圈
ax.spines['polar'].set_visible(False) 

# 設(shè)置坐標標簽字體大小和顏色
ax.tick_params(labelsize=16, colors=c['深灰色'])

plt.show()

03

雷達在展現(xiàn)多個維度的得分或性能方面,效果不錯,在財務(wù)分析和標桿管理中有著廣泛的應(yīng)用。

另外,在一些游戲中,也有用雷達圖來展現(xiàn)人物的能力。

但是,雷達圖也有一些自身的缺點,包括:

(1)如果在一個雷達圖中展現(xiàn)超過 2 組數(shù)據(jù),會讓圖表難以閱讀。

(2)變量的個數(shù)不宜過多,否則密密麻麻的線條可能讓人抓不到重點。

(3)從表達數(shù)據(jù)的精確度來看,極坐標中的角度,不如直角坐標中的位置。

同樣的數(shù)據(jù),不同人得出的觀點可能不一樣,圖表的選擇可能也不一樣,我們通常需要考慮以下幾個因素:

(1)分析提煉的信息;

(2)所屬數(shù)據(jù)的類型;

(3)想要表達的觀點;

(4)想要強調(diào)的信息。

很多人作圖有一種誤區(qū),就是喜歡運用所謂的技巧和創(chuàng)新,做出讓人難以看懂的復(fù)雜圖表,這與圖表的目的背道而馳,是我們應(yīng)該避免的。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中如何使用matplotlib制作雷達圖進行對比分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

文章標題:Python中如何使用matplotlib制作雷達圖進行對比分析
文章轉(zhuǎn)載:http://muchs.cn/article26/jsopjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)營銷型網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名