利用matlibplot繪制雷達圖


       之前在一些數據分析案例中看到用 Go 語言繪制的雷達圖,非常的漂亮,就想着用matlibplot.pyplot也照着畫一個,遺憾的是matlibplot.pyplot模塊中沒有直接繪制雷達圖的函數,不過可以基於‘polar’圖形特征來改進,下面就記錄一下如何繪制雷達圖。 

import numpy as np import matplotlib.pyplot as plt # 用於正常顯示中文 plt.rcParams['font.sans-serif'] = 'SimHei' #用於正常顯示符號 plt.rcParams['axes.unicode_minus'] = False # 使用ggplot的繪圖風格,這個類似於美化了,可以通過plt.style.available查看可選值,你會發現其它的風格真的丑。。。 plt.style.use('ggplot') # 構造數據 values = [2.6,2.1,3.4,3,4.1] feature = ['個人能力','QC知識','解決問題能力','服務質量意識','團隊精神'] # 設置每個數據點的顯示位置,在雷達圖上用角度表示 angles=np.linspace(0, 2*np.pi,len(values), endpoint=False) # 拼接數據首尾,使圖形中線條封閉 values=np.concatenate((values,[values[0]])) angles=np.concatenate((angles,[angles[0]])) # 繪圖 fig=plt.figure() # 設置為極坐標格式 ax = fig.add_subplot(111, polar=True) # 繪制折線圖 ax.plot(angles, values, 'o-', linewidth=2) # 填充顏色 ax.fill(angles, values, alpha=0.25) # 設置圖標上的角度划分刻度,為每個數據點處添加標簽 ax.set_thetagrids(angles * 180/np.pi, feature) # 設置雷達圖的范圍 ax.set_ylim(0,5) # 添加標題 plt.title('活動前后員工狀態表現') # 添加網格線 ax.grid(True) plt.show()

                                                              

  一般我們用雷達圖時,是為了比較兩組數據,因此看一下如何用雷達圖比較兩組數據

 

values_2=[1.7,4.1,3.3,2.6,3.8] values_2=np.concatenate([values_2,[values_2[0]]]) fig=plt.figure() ax = fig.add_subplot(111, polar=True) ax.plot(angles, values, 'o-', linewidth=2,label='活動前') ax.fill(angles, values, alpha=0.25) ax.plot(angles, values_2, 'o-', linewidth=2,label='活動后') ax.fill(angles, values_2, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, feature) ax.set_ylim(0,5) plt.title('活動前后員工狀態表現') plt.legend(loc='best') ax.grid(True) plt.show()

                                                              

    不過說實話,這個圖形並不怎么美觀,個人感覺主要是背景顏色得換一下。之前還看到有人用pygal庫(pygal庫繪制世界地圖信息挺不錯)繪圖庫繪制雷達圖

     

import pygal # 調用Radar這個類,並設置雷達圖的填充,及數據范圍 radar_chart = pygal.Radar(fill = True, range=(0,5)) # 添加雷達圖的標題 radar_chart.title = '活動前后員工狀態表現' # 添加雷達圖各頂點的含義 radar_chart.x_labels = ['個人能力','QC知識','解決問題能力','服務質量意識','團隊精神'] # 繪制兩條雷達圖區域 radar_chart.add('活動前', [3.2,2.1,3.5,2.8,3]) radar_chart.add('活動后', [4,4.1,4.5,4,4.1]) # 保存圖像 radar_chart.render_to_file('radar_chart.svg')

             

     這個圖就好看很多,而且還是可以交互顯示信息的圖形。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM