最近经常用到python做雷达图,现在把相关代码记录下来以备以后查看。
(一)在雷达图上表示一个点
import matplotlib.pyplot as plt
import numpy as np
plt.polar(0.25*np.pi,20,"ro",lw=2)
plt.ylim(0,100)
plt.show()
其中,polar的第一个参数是角度,第二个参数是对应的数值。
(二)雷达图上多点连成一个线
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0,2*np.pi,4,endpoint = False)
r = [20,60,40,80]
theta = np.concatenate((theta,[thta[0]]))
r = np.concatenate((r,[r[0]]))
plt.polar(theta,r,"r-",lw=2)
plt.ylim(0,100)
plt.show()
在极坐标图上表示线与表示点的方法类似,即将polar的参数换成列表或数组。有两个地方需要注意,一个是生成theta数组的时候要加endpoint = False,二是由于极坐标的数据需要闭合,因此通过np.concatenate对数据做了闭合处理,即第一个元素和最后一个元素一样。
(三)一个标准的雷达图
import numpy as np
import matplotlib.pyplot as plt
# 正常显示中文
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
#使用ggplot的风格绘图
plt.style.use('ggplot')
#构造数据
values = [3.2,2.1,3.5,2.8,3,4]
values_1 = [2.4,3.1,4.1,1.9,3.5,2.3]
feature = ['个人能力','QC知识',"解决问题能力","服务质量意识","团队精神","IQ"]
N = len(values)
#生成角度
angles = np.linspace(0,2*np.pi,N,endpoint=False)
#数据闭合
values = np.concatenate((values,[values[0]]))
angles = np.concatenate((angles,[angles[0]]))
values_1 = np.concatenate((values_1,[values_1[0]]))
#绘图
fig = plt.figure()
#设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
#绘制折线图
ax.plot(angles,values,'o-',linewidth=2,label='活动前')
ax.fill(angles,values,'r',alpha=0.5)
#填充颜色
ax.plot(angles,values_1,'o-',linewidth=2,label='活动后')
ax.fill(angles,values_1,'b',alpha=0.5)
#通过这一个命令调整背景线
ax.set_thetagrids(angles*180/np.pi,feature)
#设置极轴范围
ax.set_ylim(0,5)
#添加标题
plt.title('活动前后员工状态')
#增加网格纸
ax.grid(True)
plt.show()
参考资料:https://www.cnblogs.com/changfan/p/11799721.html