• 美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系。根据兴趣的不同,人格可分为研究型(I)、艺术型(A)、社会型(S)、企业型(E)、传统型(C)、现实型(R)六个维度,每个人的性格都是这六个维度的不同程度组合。
    展示霍兰德人格分析最有效的工具是雷达图,以工程师、实验员、艺术家、推销员、社会工作者、记事员6个职业数据为例,利用Python第三方库matplotlib绘制雷达图。
  • 代码示例
import matplotlib
import matplotlib.pyplot as plt 
import numpy as np
matplotlib.rcParams['font.family']='SimHei'           
matplotlib.rcParams['font.sans-serif']=['SimHei']   #为了正确显示中文字体,将字体更改为黑体‘SimHei’
data_labels=np.array(['工程师','实验员','艺术家','推销员','社会工作者','记事员'])
n=6
radar_labels=np.array(['    研究型(I)','艺术型(A)','社会型(S)',\
                     '企业型(E)   ','常规型(C)','现实型(R)'])    #  为了美观加了几个空格
data=np.array([[0.40,0.32,0.35,0.30,0.30,0.88],         #6种职业数据,列表元素为列表
              [0.85,0.35,0.30,0.40,0.40,0.30],
              [0.43,0.89,0.30,0.28,0.22,0.30],
              [0.30,0.25,0.48,0.85,0.45,0.40],
              [0.20,0.38,0.87,0.45,0.32,0.28],
              [0.34,0.31,0.38,0.40,0.92,0.28]]) 
angles=np.linspace(0,2*np.pi,n,endpoint=False)       #将360度平均分为n个部分(有endpoint=False分为6个部分,反之5个部分)
data=np.concatenate((data,[data[0]]))          
angles=np.concatenate((angles,[angles[0]]))        

plt.figure(facecolor='white')    #绘制全局绘图区域
plt.subplot(111,polar=True)    #绘制一个1行1列极坐标系子图,当前位置为1

plt.figtext(0.52,0.95,'霍兰德人格分析',ha='center',size=20)   #放置标题 ,ha是horizontalalignment(水平对齐方式)的缩写
plt.thetagrids(angles*180/np.pi,radar_labels)       #放置属性(radar_labels)
plt.plot(angles,data,'o-',linewidth=1.5,alpha=0.2)      #连线,画出不规则六边形
plt.fill(angles,data,alpha=0.25)        #填充,alpha是透明度(自己的实践理解)
legend=plt.legend(data_labels,loc=(0.94,0.80),labelspacing=0.1)    #放置图注(右上角)
plt.setp(legend.get_texts(),fontsize='small')      
plt.grid(True)    #打开坐标网格
plt.show()       #显示
  • 总结
    1、正确显示字体的设置方式
    2、列表元素可以为列表
    3、endpoint=False
    4、np.concatenate()函数:将数据(data)和角度(angles)的数组首尾闭合。(不是很明白)
    5、polar参数指定了绘制类型为极坐标这是subplot()除默认正方形坐标系外唯一支持的内置坐标图。
    6、了解plot()参数,o是多边形的空心顶点(加粗),- 表示多边形的边加粗实线 。
    7、thetagrids()需要有angles,labels参数,由于我使用的是python3.6,没有frac属性。
    thetagrids()添加frac属性后,报错:AttributeError: ‘Text’ object has no property ‘frac’
    这是属性错误。
  • 绘制结果
  • 霍兰德人格分析雷达图的生成python程序代码解析 霍兰德职业测试雷达图_数据