赞
踩
雷达图 Radar Chart
雷达图是多特性直观展示的重要方式
问题分析
霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系
人格分类:研究型、艺术型、社会型、企业型、传统型、现实性
职业:工程师、实验员、艺术家、推销员、记事员、社会工作者
需求:雷达图方式验证霍兰德人格分析 - 输入:各职业人群结合兴趣的调研数据 - 输出:雷达图
分析:
这段代码的作用是绘制一个极坐标系下的雷达图,其中包含了职业类型和对应的6个特质分数的数据。具体步骤如下:
导入所需的库:numpy和matplotlib.pyplot。
设置中文标签显示:将默认字体设置为中文黑体。
定义数据:一个6行6列的矩阵,表示6个职业的6个特质分数。
定义角度:使用numpy的linspace函数生成6个角度,作为雷达图的x轴坐标。
重复第一个角度:为了让图像闭合,将第一个角度再添加到数组的最后。
定义职业标签:一个包含7个字符串元素的列表。
绘制雷达图:通过循环绘制每个职业的特质分数图形。在循环中,使用ax.plot函数绘制特质分数的折线图,并使用ax.fill函数填充颜色。
添加坐标轴标签:使用ax.set_thetagrids函数添加角度轴的标签。
添加标题:使用plt.title函数添加图表标题。
添加图例:使用plt.legend函数添加图例。
显示图形:使用plt.show函数显示图形。
代码:
- # -- coding: utf-8 --
- import numpy as np
- import matplotlib.pyplot as plt
- # 如果需要使用中文标签,还需添加以下代码
- plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为中文黑体
- # 数据
- data = [[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
- [0.85, 0.75, 0.30, 0.25, 0.20, 0.40],
- [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
- [0.20, 0.30, 0.85, 0.45, 0.32, 0.25],
- [0.19, 0.22, 0.40, 0.90, 0.92, 0.28],
- [0.62, 0.55, 0.27, 0.25, 0.35, 0.30]]
-
- # 角度(弧度)
- angles = np.linspace(0, 2*np.pi, 6, endpoint=False)
-
- # 重复第一个角度以使图像闭合
- angles = np.concatenate((angles, [angles[0]]))
-
- # 职业
- occupations = ['工程师', '实验员', '艺术家', '推销员', '记事员', '社会工作者', '技术员']
-
- # 绘图
- fig = plt.figure()
- ax = fig.add_subplot(111, polar=True)
- for i in range(len(data)):
- # 绘制折线图
- ax.plot(angles, data[i]+data[i][:1], 'o-', linewidth=2, label=occupations[i])
- # 填充颜色
- ax.fill(angles, data[i]+data[i][:1], alpha=0.25)
- # 添加坐标轴标签
- ax.set_thetagrids(angles*180/np.pi, occupations)
- # 添加标题
- plt.title('Holland Personality Analysis', fontsize=20)
- # 添加图例
- plt.legend(loc='best')
- # 显示图形
- plt.show()
效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。