目录
一、实例1:个人能力画像雷达图
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 1 20:52:54 2023
@author: zcq
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
labels = np.array(['A1:综合','A2:学历','A3:职称','A4:教学','A5:培训','A6:科研'])
nAttr = 6
data = np.array([7,5,9,7,8,6])
angels = np.linspace(0,2*np.pi,nAttr,endpoint=False)
data = np.concatenate((data,[data[0]]))#级联函数data=[7, 5, 6, 9, 8, 6, 7]
angels = np.concatenate((angels,[angels[0]]))
fig = plt.figure(facecolor='white')
plt.subplot(111,polar=True)
plt.plot(angels,data,'bo-',color='g',linewidth=2)
plt.fill(angels,data,facecolor='g',alpha=0.25)
plt.thetagrids(angels*180/np.pi,labels)
plt.figtext(0.52,0.95,'个人特征画像',ha='center')
plt.grid(True)
plt.savefig('radar.jpg')
plt.show()
二、实例2:霍兰德人格分析雷达图
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 1 20:52:54 2023
@author: zcq
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
radar_labels = np.array(['A1:研究型(I)','A2:艺术型(A)','A3:社会型(S)',\
'A4:企业型(E)','A5:常规型(C)','A6:现实型(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 = ('工程师','实验员','艺术家','推销员','社会工作者','记事员')
angels = np.linspace(0,2*np.pi,nAttr,endpoint=False)
data = np.concatenate((data,[data[0]]))
angels = np.concatenate((angels,[angels[0]]))
fig = plt.figure(facecolor='white')
plt.subplot(111,polar=True)
plt.plot(angels,data,'o-',linewidth=1,alpha=0.2)
plt.fill(angels,data,alpha=0.25)
plt.thetagrids(angels*180/np.pi,radar_labels)
plt.figtext(0.52,0.95,'霍兰德人格分析',ha='center',size=20)
legend = plt.legend(data_labels,loc=(0.94,0.8),labelspacing=0.1)
plt.setp(legend.get_texts(),fontsize='small')
plt.grid(True)
plt.savefig('Holland_radar.jpg')
plt.show()
三、实例3:某校数字校园指标分析雷达图
#定义绘制雷达图函数
'''
nAttr:数组元素个数
data:绘图数组
strTilte:雷达图标题
strFilename:保存文件名
'''
def myPlotRadar(nAttr,data,strTilte,strFilename):
angels = np.linspace(0,2*np.pi,nAttr,endpoint=False)
data = np.concatenate((data,[data[0]]))
angels = np.concatenate((angels,[angels[0]]))
plt.figure(facecolor='white')
plt.subplot(111,polar=True)
plt.plot(angels,data,'bo-',color='g',linewidth=2)
plt.fill(angels,data,facecolor='g',alpha=0.25)
plt.thetagrids(angels*180/np.pi,labels)
plt.figtext(0.52,0.95,strTilte,ha='center')
plt.grid(True)
plt.savefig(strFilename)
plt.show()
#A1-5:总体雷达图
labels = np.array(['A1:基础设施','A2:信息资源','A3:应用服务',
'A4:网络安全','A5:保障体系'])
nAttr = 5
data = np.array([5.5,7.05,6.1,8.27,8.47])
strTilte = '西安电力高等专科学校2023年数字校园对标评估分析'
strFilename = 'radar_All.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(一)基础设施分析
#A1:基础设施
labels = np.array(['A1.1:校园网络','A1.2:数据中心','A1.3:教学环境'])
nAttr = 3
data = np.array([5.67,7.0,4.9])
strTilte = '西安电力高等专科学校-A1:基础设施'
strFilename = 'radar_A1.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(二)信息资源分析
#A2:信息资源
labels = np.array(['A2.1:数据资源','A2.2:教学资源','A2.3:资源管理'])
nAttr = 3
data = np.array([5.0,7.58,6.67])
strTilte = '西安电力高等专科学校-A2:信息资源'
strFilename = 'radar_A2.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(三)应用服务分析
#A3:应用服务
labels = np.array(['A3.1:基础平台','A3.2:教学应用','A3.3:教学评价',
'A3.4:管理服务'])
nAttr = 4
data = np.array([5.0,7,6.67,5.5])
strTilte = '西安电力高等专科学校-A3:应用服务'
strFilename = 'radar_A3.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(四)网络安全分析
#A4:网络安全
labels = np.array(['A4.1:基础设施安全','A4.2:信息系统安全','A4.3:终端安全',
'A4.4:数据安全','A4.5:内容安全','A4.6:安全管理'])
nAttr = 6
data = np.array([10.0,10,8,5.5,10,8])
strTilte = '西安电力高等专科学校-A4:网络安全'
strFilename = 'radar_A4.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(五)保障体系分析
#A5:保障体系
labels = np.array(['A5.1:组织机构','A5.2:人员队伍','A5.3:规章制度',
'A5.4:经费保障'])
nAttr = 4
data = np.array([8.67,7.2,10,8.33])
strTilte = '西安电力高等专科学校-A5:保障体系'
strFilename = 'radar_A5.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
(六)程序代码
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 9 10:23:25 2023
@author: Lenovo
"""
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
#定义绘制雷达图函数
'''
nAttr:数组元素个数
data:绘图数组
strTilte:雷达图标题
strFilename:保存文件名
'''
def myPlotRadar(nAttr,data,strTilte,strFilename):
angels = np.linspace(0,2*np.pi,nAttr,endpoint=False)
data = np.concatenate((data,[data[0]]))
angels = np.concatenate((angels,[angels[0]]))
plt.figure(facecolor='white')
plt.subplot(111,polar=True)
plt.plot(angels,data,'bo-',color='g',linewidth=2)
plt.fill(angels,data,facecolor='g',alpha=0.25)
plt.thetagrids(angels*180/np.pi,labels)
plt.figtext(0.52,0.95,strTilte,ha='center')
plt.grid(True)
plt.savefig(strFilename)
plt.show()
#A1-5:总体雷达图
labels = np.array(['A1:基础设施','A2:信息资源','A3:应用服务',
'A4:网络安全','A5:保障体系'])
nAttr = 5
data = np.array([5.5,7.05,6.1,8.27,8.47])
strTilte = '西安电力高等专科学校2023年数字校园对标评估分析'
strFilename = 'radar_All.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
#A1:基础设施
labels = np.array(['A1.1:校园网络','A1.2:数据中心','A1.3:教学环境'])
nAttr = 3
data = np.array([5.67,7.0,4.9])
strTilte = '西安电力高等专科学校-A1:基础设施'
strFilename = 'radar_A1.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
#A2:信息资源
labels = np.array(['A2.1:数据资源','A2.2:教学资源','A2.3:资源管理'])
nAttr = 3
data = np.array([5.0,7.58,6.67])
strTilte = '西安电力高等专科学校-A2:信息资源'
strFilename = 'radar_A2.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
#A3:应用服务
labels = np.array(['A3.1:基础平台','A3.2:教学应用','A3.3:教学评价',
'A3.4:管理服务'])
nAttr = 4
data = np.array([5.0,7,6.67,5.5])
strTilte = '西安电力高等专科学校-A3:应用服务'
strFilename = 'radar_A3.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
#A4:网络安全
labels = np.array(['A4.1:基础设施安全','A4.2:信息系统安全','A4.3:终端安全',
'A4.4:数据安全','A4.5:内容安全','A4.6:安全管理'])
nAttr = 6
data = np.array([10.0,10,8,5.5,10,8])
strTilte = '西安电力高等专科学校-A4:网络安全'
strFilename = 'radar_A4.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
#A5:保障体系
labels = np.array(['A5.1:组织机构','A5.2:人员队伍','A5.3:规章制度',
'A5.4:经费保障'])
nAttr = 4
data = np.array([8.67,7.2,7.5,8.33])
strTilte = '西安电力高等专科学校-A5:保障体系'
strFilename = 'radar_A5.jpg'
myPlotRadar(nAttr,data,strTilte,strFilename)
【参考文献】嵩天,礼欣,黄天羽著,python语言程序设计基础(第2版)[M],北京:高等教育出版社,2020.2
【参考链接】https://blog.csdn.net/weixin_44940191/article/details/126910761