雷达图
霍兰德认为人格兴趣与职业之间有一种内在的对应的关系。我们需要绘制雷达图,并且展示第三方数据。(编译错误AttributeError: Unknown property frac在文章结尾)
matplotlib.rcParams[‘font.family’]='SimHei’意为将图片中的字体设置为SimHei,matplotlib.rcParams[‘font.family’]为设置字体。
numpy.array([]),意为设置多维数组,python是有array功能的,但是仅仅可以定义一维数组,并不能定义多维数组,而numpy库提供了多维数组的定义。radar_labels、data均可以用这种方法定义,data_labels则是一组元组。
angles=np.linspace表示要获得一组等差的数列,使用方法如下:numpy.linspace(start, stop, num=50, endpoint=True),表示以start为起点,stop为结束点,中间一共取num个点,可以不填num,若不填,则默认为50,且num为非负的值。endpoint=True,则取的点中包括结束点,endpoint=False,则取的点中不包括技术点,例如以下的例子:
np.linspace(2.0, 3.0, num=5)
array([ 2. , 2.25, 2.5 , 2.75, 3. ])
np.linspace(2.0, 3.0, num=5, endpoint=False)
array([ 2. , 2.2, 2.4, 2.6, 2.8])
numpy.pi为numpy库中的Π值,所以这里的angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)表示以0为起始点,2Π为结束点,不包含结束点一共取nAttr个点。
np.concatenate函数:我们这里讲解一下拼接函数的三种方法:
1、先将数组转换为列表,后用列表的拼接函数append()、extend()进行拼接,最后将列表转换为数组。如下:import numpy as np
x=np.array([0,1,2])
y=np.array([5,6,7])
listx=list(x)
listy=list(y)listx.extend(listy)
listx
[0,1,2,5,6,7]
x=np.array(listx)
x
array([0,1,2,5,6,7])
这种方法适用于简单的拼接,因为过程过于繁琐,且浪费处理的时间 。在运行程序中,我们为了更直观,加入print函数进行输出显示。

import numpy as np
x=np.array([0,1,2])
y=np.array([5,6,7])
print(x,y)
listx=list(x)
listy=list(y)
listx.extend(listy)
print(listx)
x=np.array(listx)
print(x)

结果为:

2、numpy库中有numpy.append(arr, values, axis=None)函数。对参数有一定的限制:数组和数值或者两个数组,不能三个以上的数组进行直接的append函数拼接。
import numpy as np
x=np.array([0,1,2])
y=np.array([5,6,7])
np.append(x,317)
array([0,1,2,317])
x
array([0,1,2])
np.append(x,y)
array([0,1,2,5,6,7])
A=array([[0,1,2],[3,4,5]])
B=np.array([[10,11,12],[13,14,15]])
np.append(A,B)
array([0,1,2,3,4,5,10,11,12,13,14,15])
numpy的数组是不会一直更新数组的,numpy.append()函数会重新分配数组。

import numpy as np
x=np.array([0,1,2])
y=np.array([5,6,7])
print(x,y)
t=np.append(x,317)
print(t,x)
k=np.append(x,y)
print(k)
A=np.array([[0,1,2],[3,4,5]])
B=np.array([[10,11,12],[13,14,15]])
u=np.append(A,B)
print(u)
print(A)


结果如下:

3、利用numpy.concatenate((a1,a2,…), axis=0)函数。能够一次完成多个数组的拼接。
import numpy as np
x=np.array([0,1,2,3])
y=np.array([4,5,6])
z=np.array([7,8,9,0])
np.concatenate((x,y,z),axis=0) #axis=0不写则默认为0
array([0,1,2,3,4,5,6,7,8,9,0]) #对一维数组的拼接,axis的值不影响结果
A=np.array([[0,1,2],[3,4,5]])
B=np.array([[100,101,102],[103,104,105]])
np.concatenate((A,B),axis=0)#axis=0表示直接进行拼接
array([[0,1,2],
[3,4,5],
[100,101,102],
[103,104,105]])
np.concatenate((A,B),axis=1) #axis=1表示对应行的数组进行拼接
array([[0,1,2,100,101,102],
[3,4,5,103,104,105]])

import numpy as np
x=np.array([0,1,2,3])
y=np.array([4,5,6])
z=np.array([7,8,9,0])
k=np.concatenate((x,y,z),axis=0)
print(x,y,z)
print(k)
#axis=0不写则默认为0
#对一维数组的拼接,axis的值不影响结果
A=np.array([[0,1,2],[3,4,5]])
B=np.array([[100,101,102],[103,104,105]])
t=np.concatenate((A,B),axis=0)#axis=0表示直接进行拼接
print(A,B)
print(t)
p=np.concatenate((A,B),axis=1)
#axis=1表示对应行的数组进行拼接
print(p)

结果如下:

plt.figure(facecolor=’white’)为将图形的背景颜色设置为白色,如果不写,默认是rc figure.facecolor。其他参数如下表所示:

fig.add_subplot(111, projection=‘polar’),意为添加一个极坐标的图。
plt.plot(x,y,string,*k)表示以x为横轴、y为纵轴,string有很多可以选择的参数,我们这里只介绍程序中出现的,*k也有许多可以选取的。
(其他参数可以参考:https://blog.csdn.net/qq_15264999/article/details/80862216)。
plt.plot(angles,data,‘o-’,linewidth=1,alpha=0.2)表示以angles为横轴数据,data为纵轴数据,’-0’表示实线实心圈标记。alpha表示透明度(是浮点值),值从0-1不等,0为透明,1为不透明。linewidth表示线宽,为浮点值。
matplotlib.pyplot.fill(args,kwargs):绘制填充图,填充x轴和曲线y之间区域。ax.fill(x1,y1,‘g’,x2,y2,‘r’)返回Polygon属性
plt.thetagrids方法用于设置极坐标角度网格线显示,参数为所要显示网格线的角度值列表,且默认显示0°、45°、90°、135°、180°、225°、270°、315°的网格线。plt.thetagrids(angles180/np.pi,radar_labels)即为在angles180/Π的角度上标上为radar_labels的标签。(原本为角度)plt.figtext(x,y, txt, size=12) 在figure中的任意位置添加文本,前面两个参数是指定位置。plt.figtext(0.52,0.95,‘霍兰德人格分析’,ha=‘center’,size=20),意思为在0.52,0.95的位置处添加’霍兰德人格分析’的文本,字大小为20。
plt.legend(*args, **kwargs),为一般形式plt.legend(data_labels,loc=(0.94,0.80),labelspacing=0.1)表示将数据data_labels添加至位置为(0.94,0.80),图例条目之间的垂直间距为0.1。
用plt.setp()命令来进行设置,该命令可以对一个列表或者单个对象进行设置。
plt.grid(True) 意思为显示背景的网格线。
使用plt.savefig()保存的图片。
plt.show()用来显示图像。
完整代码如下:

#霍兰德人格分析雷达图
#HollandRadarDraw
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
radar_labels=np.array(['研究型(I)','艺术型(A)','社会型(S)',\'企业型(E)','常规型(C)','现实型(R)'])
#雷达标签
nAttr=6
data=np.array([[0.40,0.32,0.35,0.30,0.30,0.88],[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]])
#数据值
data_labels=('艺术家','实验员','工程师','推销员','社会工作者','记事员')
angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)
data=np.concatenate((data,[data[0]]))
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(facecolor="white")
plt.subplot(111,polar=True)
plt.plot(angles,data,'o-',linewidth=1,alpha=0.2)
plt.fill(angles,data,alpha=0.25)
plt.thetagrids(angles*180/np.pi,radar_labels)
plt.figtext(0.52,0.95,'霍兰德人格分析',ha='center',size=20)
legend=plt.legend(data_labels,loc=(0.94,0.80),labelspacing=0.1)
plt.setp(legend.get_texts(),fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()

输出得到以下结果:

错误分析:
我在编写代码的时候发现,以原有的(网课中的源代码)代码编写,会出现以下错误:

错误类型为:
raise AttributeError(‘Unknown property %s’ % k)
AttributeError: Unknown property frac
AttributeError: Unknown property frac:属性错误:未知属性frac。
出现这个错误的原因是网课的python库是旧版本的,在最新的python中,库的函数有一些参数发生了一定的变化,比如在plt.thetagrids函数中,没有frac参数了。
改进方法:将frac=1.2去掉即可,运行程序就能正常运行了。

python学习笔记霍兰德人格分析与错误解决相关推荐

  1. Python编程案例-霍兰德人格分析雷达图

    1.原始代码 #HollandRadarDraw import numpy as np import matplotlib.pyplot as plt import matplotlib matplo ...

  2. Python学习 matplotlib库 霍兰德人格分析雷达图

    [Python学习] matplotlib库 绘制霍兰德人格分析雷达图 学习一些Python知识.用matplotlib库进行雷达图的绘制. 实现效果图片: 代码参考:<Python语言程序设计 ...

  3. python——关于“霍兰德人格分析雷达图”代码运行错误解决

    问题描述: 嵩天老师课上代码运行时出现两个问题: 1.无Qt平台插件错误(解决了很久):This application failed to start because no Qt platform ...

  4. Python学习——霍兰德人格分析雷达图代码问题

    实例15: 霍兰德人格分析雷达图,输入代码后执行报错,错误信息:AttributeError: 'Text' object has no property 'frac' 查阅相关资料,与第三方库的版本 ...

  5. 学习Python 霍兰德人格分析雷达图

    ### 霍兰德人格分析雷达图 import numpy as np import matplotlib.pyplot as mplp import matplotlib as mplmpl.rcPar ...

  6. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  7. 北理网课 - Python语言程序设计 - 9.2 实例15:“霍兰德人格分析” (初学,冰山一角)

    一."霍兰德人格分析"问题解析 雷达图(Redar Chart):多特性直观展示的重要方式 霍兰德人格分析 -霍兰德认为:人格性趣与职业之间用有一种内在的对应联系 -人格分类:研究 ...

  8. Python入门实例验证及结果之实例16 霍兰德人格分析雷达图 ## python计算生态概览

    python计算生态概览 从数据处理到人工智能 数据表示->数据清洗-> 数据统计->数据可视化->数据挖掘->人工智能 -数据表示:采用合适的方式用程序表达数据 -数据 ...

  9. python多级雷达图绘制解析_Python实例15:霍兰德人格分析雷达图

    Python实例15:霍兰德人格分析雷达图 雷达图是多特性直观展示的重要方式: 霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系: 人格分类:研究型.艺术型.社会型.企业型.传统型.现实型: 职业 ...

最新文章

  1. 《汇编语言》实验五课程
  2. c++ 数组 结构体
  3. CLR via C# 之管中窥豹(一)
  4. WinError 126 asmjit.dll or one of its dependencies.
  5. 把kafka数据从hbase迁移到hdfs,并按天加载到hive表(hbase与hadoop为不同集群)
  6. A.I. Wiki 人工智能
  7. 《麻省理工公开课:线性代数》中文笔记来了!
  8. java带jar包运行_java带jar包的命令行运行
  9. Android 应用程序无响应(ANR)报错原因
  10. 小程序与微信会员卡打通教程
  11. 用爬虫模拟登陆urp教务处系统
  12. AE TypeMonkey
  13. 深圳市海平线科技有限公司
  14. 利用新浪API实现股票交易实时监控
  15. 在树莓派上实现face++人脸识别
  16. C语言基础:函数的声明与定义
  17. 他们将区块链技术和人工智能相结合,突破区块链技术瓶颈,提高人工智能行业生产效率
  18. VMware虚拟机的创建和启动,保姆式教学
  19. 浏览器缓存机制和设置
  20. unipush解决华为、小米、魅族收不到厂商推送的问题

热门文章

  1. 稳定性与分岔(1)-什么是分岔?
  2. 我的世界电脑java版服务器,《我的世界》中国版PC Java版不限号 Hypixel闪电饥饿游戏...
  3. 折纸测珠峰python程序_受折纸艺术启发:“月球方舟”将在格林兰岛进行测试
  4. Centos中安装docker并查看拉取镜像的位置
  5. IDC:机房监控系统
  6. 国产工程数字化内容中台iLink正式发布,赋能全员、全过程协同管理
  7. 美国最好的计算机工程专业排名,2021USnews美国研究生专业排名:计算机工程专业排名...
  8. 【黄啊码】我问ChatGPT如何学习PHP语言,它是这么说的
  9. 好工具,促成好开发 -- YesDev
  10. Pr 入门教程:如何为剪辑添加外观?