matplotlib 雷達圖2


說明

搞了一個最新版本的雷達圖,比以前那個美觀。

不多說,代碼奉上:

完整代碼

'''
matplotlib雷達圖
'''
import numpy as np
import matplotlib.pyplot as plt


# 雷達圖
def plot_radar(labels, data, score):
    '''
    用法:
    >>> labels = np.array(['藝術A','調研I','實際R','常規C','企業E','社會S']) #標簽
    >>> data = np.array([1,4,3,6,4,8]) # 數據
    >>> score = 10 # 表明數據是“十分制”。其可選的選項有1分制、5分制、10分制、100分制
        
    >>> plot_radar(labels, data, score) # 畫雷達圖
    '''
    n = len(labels)
    
    # 轉化為十分制!!!
    if score in [5, 10, 100]:
        data = data * 10/score
    elif score == 1:
        data = data * 10
    
    angles = np.linspace(0 + np.pi/2, 2*np.pi + np.pi/2, n, endpoint=False) # 旋轉90度,從正上方開始!
    
    data = np.concatenate((data, [data[0]])) # 閉合
    angles = np.concatenate((angles, [angles[0]])) # 閉合
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111, polar=True)# 參數polar,表示極坐標!!
    
    # 自己畫grid線(5條環形線)
    for i in [2,4,6,8,10]:
        ax.plot(angles, [i]*(n+1), 'b-',lw=0.5) # 之所以 n +1,是因為要閉合!
    
     # 填充底色
    ax.fill(angles, [10]*(n+1), facecolor='g', alpha=0.5)

    # 自己畫grid線(6條半徑線)
    for i in range(n):
        ax.plot([angles[i], angles[i]], [0, 10], 'b-',lw=0.5)
        
    
    # 畫線
    ax.plot(angles, data, 'bo-', linewidth=2)
    
    # 填充
    #ax.fill(angles, data, facecolor='r', alpha=0.25)
    ax.fill(angles, data, facecolor='r')
    
    
    ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
    ax.set_title("matplotlib雷達圖", va='bottom', fontproperties="SimHei")
    ax.set_rlim(0,10)

    # 下兩行去掉所有默認的grid線
    ax.spines['polar'].set_visible(False) # 去掉最外圍的黑圈
    ax.grid(False)                        # 去掉中間的黑圈

    # 關閉數值刻度
    ax.set_yticks([])


    plt.show()



# 測試
if __name__ == '__main__':
    
    labels = np.array(['藝術A','調研I','實際R','常規C','企業E','社會S']) #標簽
    
    data = np.array([1,4,3,6,4,8]) # 數據
    
    score = 10 # 表明數據是“十分制”。其可選的選項有1分制、5分制、10分制、100分制
    
    
    # 畫雷達圖
    plot_radar(labels, data, score)



效果圖


免責聲明!

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



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