• python的matplotlib---雷达图


    1.先了解一下什么是极坐标

    极点:以圆的中心作为极点O

    极轴:以0°的方向引一条射线极轴Ox,

    极径:选定一个长度单位r

    极角:以Ox正方向开始计算角度θ(通常取逆时针方向)

    极坐标:以极点O作为圆心,以极昼Ox的方向作为起点,以极径r作为半径,画一个以极角θ的扇形,最终圆规脚定的位置就是极坐标M

    2.利用matplotlib画出一个点

    import matplotlib.pyplot as plt
    import numpy as np
    
    """
    20:以20作为半径
    ylim(0,100):设置极轴的范围
    lw=2:表示极坐标图案的宽度
    ro:绘制的极坐标图形为红色圆点 
    """
    
    plt.polar(0.25*np.pi,20,"ro",lw=2)
    plt.ylim(0,100)
    plt.show()

     3.利用matplotlib画多个点并连成封闭图案

    import matplotlib.pyplot as plt
    import numpy as np
    
    """
    绘制多个点,并且第一个点与最后一个点相同,使其成为闭合图案
    """
    
    theta = np.array([0.25,0.75,1,1.5,0.25])
    r = [20,60,40,80,20]
    
    plt.polar(theta*np.pi,r,"r-",lw=2)
    plt.ylim(0,100)
    plt.show()

     4.填充颜色

    import matplotlib.pyplot as plt
    import numpy as np
    
    #使用ggplot的绘图风格
    plt.style.use('ggplot')
    
    #构建角度与值
    theta = np.array([0.25,0.75,1,1.5,0.25])
    r = [20,60,40,80,20]
    
    plt.polar(theta*np.pi,r,"r-",lw=1)
    
    #设置填充颜色,并且透明度为0.75
    plt.fill(theta*np.pi,r,'r',alpha=0.75)
    plt.ylim(0,100)
    
    #显示网格线
    plt.grid(True)
    plt.show()

     5.绘制多个数据的雷达图

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 中文和负号的正常显示
    plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
    plt.rcParams['axes.unicode_minus'] = False
    
    #使用ggplot的风格绘图
    plt.style.use('ggplot')
    
    #构造数据
    values = [3.2,2.1,3.5,2.8,3,4]
    values_1 = [2.4,3.1,4.1,1.9,3.5,2.3]
    feature = ['个人能力','QC知识',"解决问题能力","服务质量意识","团队精神","IQ"]
    
    N = len(values)
    
    #设置雷达图的角度,用于平分切开一个平面
    angles = np.linspace(0,2*np.pi,N,endpoint=False)
    
    #使雷达图封闭起来
    values = np.concatenate((values,[values[0]]))
    angles = np.concatenate((angles,[angles[0]]))
    
    values_1 = np.concatenate((values_1,[values_1[0]]))
    #绘图
    fig = plt.figure()
    #设置为极坐标格式
    ax = fig.add_subplot(111, polar=True)
    #绘制折线图
    ax.plot(angles,values,'o-',linewidth=2,label='活动前')
    ax.fill(angles,values,'r',alpha=0.5)
    
    #填充颜色
    ax.plot(angles,values_1,'o-',linewidth=2,label='活动后')
    ax.fill(angles,values_1,'b',alpha=0.5)
    
    #添加每个特质的标签
    ax.set_thetagrids(angles*180/np.pi,feature)
    #设置极轴范围
    ax.set_ylim(0,5)
    #添加标题
    plt.title('活动前后员工状态')
    #增加网格纸
    ax.grid(True)
    plt.show()

    非学无以广才,非志无以成学。 正是因为今天的不完美,才对未来充满希望。 ----长帆
  • 相关阅读:
    python面试题目【转1】
    让python和C/C++联姻【转】
    python面试模拟真题讲解
    JavaScript真的要一统江湖了
    WebApp
    Linux服务器之SSH
    web服务之http
    SNMP简单网络管理协议
    Storm,Spark和Samza
    Stream computing
  • 原文地址:https://www.cnblogs.com/changfan/p/11799721.html
Copyright © 2020-2023  润新知