zoukankan      html  css  js  c++  java
  • 利用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')

                 

         这个图就好看很多,而且还是可以交互显示信息的图形。

  • 相关阅读:
    使用mybatis插入自增主键ID的数据后返回自增的ID
    CentOS 配置阿里云 yum 源
    Zabbix监控ActiveMQ
    wget下载阿里云oss的文件报错403
    Zabbix-proxy和Zabbix-agent源码安装
    Zabbix 设置自动添加主机两种方法(自动注册、自动发现)
    Zabbix邮件预警-这个坑我跳了不止一次
    AWS云创建EC2与使用注意事项-踩坑记录
    Zabbix图表中文乱码(包含Docker安装乱码)
    Zabbix server 更改数据库密码
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886346.html
Copyright © 2011-2022 走看看