多级雷达图绘制

 使用matplotlib.pyplot绘制圆形多级雷达图,即在一组同心圆上填充不规则六边形,某个顶点到圆心的距离代表人物数据的某个属性。雷达图(也称为蜘蛛图或星形图)是一种可视化视图,指一种可以直观展现对象多属性的差异的图像。

第一步:导入库

import numpy as np  
import matplotlib.pyplot as plt  
import matplotlib
  • numpy 是一个用于数值计算的库,通常简称为 np
  • matplotlib.pyplot 是 Matplotlib 的一个子模块,它提供了一个类似于 MATLAB 的绘图框架,通常简称为 plt
  • matplotlib 是 Python 的一个绘图库。

 第二步:设置中文字体

matplotlib.rcParams['font.family'] = 'SimHei'  
matplotlib.rcParams['font.sans-serif'] = ['SimHei']

这两行代码是为了确保在图表中可以显示中文字符。'SimHei' 是一个常用于 Windows 的中文字体。

第三步:定义标签和数据

labels = np.array(['综合','KDA','发育','推进','生存','输出'])  
nAttr = 6  
data = np.array([7,5,6,9,8,7])
  • labels 是一个包含六个中文字符串的 NumPy 数组,代表不同的能力值标签。
  • nAttr 是一个整数,表示属性的数量(这里为6)。
  • data 是一个包含六个整数值的 NumPy 数组,代表每个能力值的评分。

第四步:计算角度


	angles = np.linspace(0,2*np.pi,nAttr,endpoint=False)

使用 np.linspace 函数计算从 0 到 2π 的等差数列,但不包括 2π。这是因为雷达图是一个闭环,最后一个点和第一个点应该相连。

 第五步:创建图表

fig = plt.figure(facecolor = "white")  
plt.subplot(111,polar=True)
  • plt.figure(facecolor = "white") 创建一个新的图表,背景色为白色。
  • plt.subplot(111,polar=True) 在图表上添加一个子图,并设置其为极坐标(即雷达图)。

第六步:绘制雷达图

plt.plot(angles,data,'bo-',color='g',linewidth=2)  
plt.fill(angles,data,facecolor = 'g',alpha = 0.25)
  • plt.plot 用于绘制连线,其中 'bo-' 表示线型(绿色线条,带圆形标记,并连线)。但由于 color='g' 已经指定了绿色,所以 'bo-' 中的颜色代码 'b' 被忽略。
  • plt.fill 用于填充雷达图的区域,alpha=0.25 表示填充颜色的透明度。

第七步:设置标签和标题

plt.thetagrids(angles*180/np.pi,labels)  
plt.figtext(0.25,0.95,'DOTA能力值雷达图',ha = 'center')
  • plt.thetagrids 用于设置极坐标图的角度标签。由于 angles 是以弧度为单位的,所以需要乘以 180/np.pi 转换为角度。
  • plt.figtext 用于在图表上添加文本,这里添加的是标题“DOTA能力值雷达图”。

第八步:显示网格和保存图表

plt.grid(True)  
plt.savefig('dota_radar.JPG')
  • plt.grid(True) 显示网格线。
  • plt.savefig('dota_radar.JPG') 将图表保存为 JPG 文件。

 第九步:显示图表

plt.show()

 最后,这行代码会在屏幕上显示图表。

结果如图所示:

代码如下: 

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(['综合','KDA','发育','推进','生存','输出'])
nAttr = 6
data = np.array([7,5,6,9,8,7])
angles = np.linspace(0,2*np.pi,nAttr,endpoint=False)
fig = plt.figure(facecolor = "white")
plt.subplot(111,polar=True)
plt.plot(angles,data,'bo-',color='g',linewidth=2)
plt.fill(angles,data,facecolor = 'g',alpha = 0.25)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.25,0.95,'DOTA能力值雷达图',ha = 'center')
plt.grid(True)
plt.savefig('dota_radar.JPG')
plt.show()

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多级雷达图是一种将多个雷达图叠加在一起的可视化方式,可以更加直观地比较不同对象在多个属性上的表现。在Python中,可以使用Matplotlib库来绘制多级雷达图。具体步骤如下: 1. 导入Matplotlib库和Numpy库。 2. 创建一个Figure对象和一个Subplot对象。 3. 定义每个雷达图的属性名称和范围。 4. 绘制每个雷达图。 5. 将所有雷达图叠加在一起。 下面是一个简单的代码示例,用于绘制一个包含两个雷达图多级雷达图: ``` import matplotlib.pyplot as plt import numpy as np # 定义属性名称和范围 attributes1 = ['A', 'B', 'C', 'D', 'E'] ranges1 = [[0, 5], [0, 5], [0, 5], [0, 5], [0, 5]] attributes2 = ['F', 'G', 'H', 'I', 'J'] ranges2 = [[0, 10], [0, 10], [0, 10], [0, 10], [0, 10]] # 创建Figure对象和Subplot对象 fig = plt.figure(figsize=(6, 6)) ax = fig.add_subplot(111, polar=True) # 绘制第一个雷达图 angles = np.linspace(0, 2*np.pi, len(attributes1), endpoint=False) angles = np.concatenate((angles, [angles[0]])) values1 = [1, 3, 2, 4, 5] values1 = np.concatenate((values1, [values1[0]])) ax.plot(angles, values1, 'o-', linewidth=2) ax.fill(angles, values1, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, attributes1) ax.set_ylim(ranges1) # 绘制第二个雷达图 angles = np.linspace(0, 2*np.pi, len(attributes2), endpoint=False) angles = np.concatenate((angles, [angles[0]])) values2 = [5, 4, 3, 2, 1] values2 = np.concatenate((values2, [values2[0]])) ax.plot(angles, values2, 'o-', linewidth=2) ax.fill(angles, values2, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, attributes2) ax.set_ylim(ranges2) # 显示图形 plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值