美文网首页
Python matplotlib 画 雷达图

Python matplotlib 画 雷达图

作者: 火卫控 | 来源:发表于2021-12-21 16:57 被阅读0次

    有几组数据需要呈现,多维比较,适合雷达图

    结果如下:


    各种疫苗特性.png

    代码如下:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.family']='SimHei'
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']
    
    labels = np.array(['综合','安全性','体液免疫','细胞免疫'])
    # labels = np.array(['综合','KDA','发育','推进','生存','输出'])
    labels = np.concatenate((labels,[labels[0]]))
    
    nAttr = 4
    # 特好 好 较好 差   100  85 70 55
    # 3 3 1
    # 2 3 4
    # 4 3 1
    # 2 2 3
    # 75/3,
    # 225/3
    # 200/3
    # 175/3
    # 200/3
    
    data1 = np.array([100*(175/3)/(225/3),85,85,25])
    data2 = np.array([100*(225/3)/(225/3),50,75,100])
    data3 = np.array([100*(200/3)/(225/3),100,75,25])
    data4 = np.array([100*(175/3)/(225/3),50,50,75])
    data5 = np.array([100*(200/3)/(225/3),75,75,50])
    
    data2 = np.concatenate((data2,[data2[0]]))
    data3 = np.concatenate((data3,[data3[0]]))
    data4 = np.concatenate((data4,[data4[0]]))
    data5 = np.concatenate((data5,[data5[0]]))
    
    
    angles = np.linspace(0+np.pi/2,np.pi/2+2*np.pi,nAttr,endpoint=False)
    data1 = np.concatenate((data1,[data1[0]]))
    angles = np.concatenate((angles,[angles[0]]))
    fig = plt.figure(facecolor="white")
    plt.subplot(111,polar=True)
    
    # for values in [values1, values2]:
    # # 拼接数据首尾,使图形中线条封闭
    #     values=np.concatenate((values,[values[0]]))
    #     # 设置为极坐标格式
    #     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.plot(angles,data1,'-',color ='g',linewidth=1,alpha=0.45,label='灭活疫苗')
    plt.fill(angles,data1,facecolor='g',alpha=0.25)
    plt.thetagrids(angles*180/np.pi,labels)
    
    plt.plot(angles,data2,'-',color ='y',linewidth=1,alpha=0.45,label='减毒活疫苗')
    plt.fill(angles,data2,facecolor='y',alpha=0.25)
    # plt.thetagrids(angles*180/np.pi,labels)
    
    plt.plot(angles,data3,'-',color ='r',linewidth=1,alpha=0.45,label='亚单位疫苗')
    plt.fill(angles,data3,facecolor='r',alpha=0.25)
    # plt.thetagrids(angles*180/np.pi,labels)
    
    plt.plot(angles,data4,'-',color ='grey',linewidth=1,alpha=0.45,label='活载体疫苗')
    plt.fill(angles,data4,facecolor='grey',alpha=0.25)
    # plt.thetagrids(angles*180/np.pi,labels)
    
    plt.plot(angles,data5,'-',color ='blue',linewidth=1,alpha=0.45,label='核酸疫苗')
    plt.fill(angles,data5,facecolor='blue',alpha=0.25)
    # plt.thetagrids(angles*180/np.pi,labels)
    
    
    
    plt.figtext(0.515,0.95,'各种疫苗特性2',ha='center')
    
    plt.legend(loc='best')
    plt.grid(True)
    # plt.savefig("各种疫苗特性.png",dpi=600)
    plt.show()
    
    

    调整角度区间可以改变位置,如下:


    各种疫苗特性.png

    相关文章

      网友评论

          本文标题:Python matplotlib 画 雷达图

          本文链接:https://www.haomeiwen.com/subject/vmnqqrtx.html