91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-25 14:44:17 來源:億速云 閱讀:382 作者:小新 欄目:大數據

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

前言

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

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

其中「持續性」與學習的天數相關,「學習量」與聽課或看書的數量相關,「筆記」與筆記的數量和互動相關,「知識分享」與分享轉發的次數相關,「好奇心」與搜索的次數和廣度相關。

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

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

02

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

首先,導入所需的庫,并設置中文字體和定義顏色等。

# 導入所需的庫
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']

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

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

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

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

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

# 數據源路徑
filepath='./data/林驥的學分構成.xlsx'

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

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

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

# 根據分數添加評級的標簽
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 有幾個數據,就把整圓 360° 分成幾份
angle = np.linspace(0, 2*np.pi, len(data0), endpoint=False)

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

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

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

接下來,開始用「面向對象」的方法進行畫圖。

# 使用「面向對象」的方法畫圖,定義圖片的大小
fig, ax=plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))

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

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

# 設置網格標簽
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'))

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

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

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

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

# 設置圖例顯示的位置
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) 

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

plt.show()

03

雷達在展現多個維度的得分或性能方面,效果不錯,在財務分析和標桿管理中有著廣泛的應用。

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

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

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

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

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

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

(1)分析提煉的信息;

(2)所屬數據的類型;

(3)想要表達的觀點;

(4)想要強調的信息。

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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中如何使用matplotlib制作雷達圖進行對比分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉树县| 三原县| 洛川县| 揭西县| 东平县| 南华县| 盐亭县| 合川市| 荔浦县| 平乐县| 调兵山市| 任丘市| 玉屏| 驻马店市| 林州市| 阿尔山市| 大关县| 确山县| 崇信县| 三台县| 西乌| 漳州市| 专栏| 南京市| 信宜市| 金昌市| 北京市| 永定县| 山东省| 博白县| 宣汉县| 册亨县| 河北区| 班玛县| 雷波县| 资源县| 翁源县| 淄博市| 满洲里市| 阿克陶县| 易门县|