下面是如何用Python绘制雷达图的完整攻略:
1. 简介
雷达图又叫蜘蛛网图、极坐标图,是通过在同一张图表上描绘多个相关变量的方法,通常用于展示相对值。如何用 Python 绘制雷达图呢?可以使用 Matplotlib 库中的 Polar(极坐标)功能进行绘制,接下来我们就来一步一步讲解。
2. 准备工作
在开始绘制雷达图之前,我们需要先引入 NumPy 和 Matplotlib 库,代码如下:
import numpy as np
import matplotlib.pyplot as plt
接着,我们需要定义数据,这里我们以五维数据(R,Python,Java,JavaScript,PHP)为例,代码如下:
#数据数目
data_number=5
#定义数据
data = [30, 20, 25, 35, 27]
#将360度分为data_number份
angles = np.linspace(0, 2*np.pi, data_number, endpoint=False)
3. 绘制雷达图
接下来,我们可以通过 Matplotlib 中的 Polar 功能来进行绘制雷达图,代码如下:
#设置绘图区域大小
fig = plt.figure(figsize=(6,6))
#使用极坐标
ax = fig.add_subplot(111, polar=True)
#绘制折线图(第一个点和最后一个点连线)
ax.plot(np.concatenate((angles,[angles[0]])), np.concatenate((data,[data[0]])), 'bo-', linewidth=2)
# 填充颜色
ax.fill(np.concatenate((angles,[angles[0]])), np.concatenate((data,[data[0]])), facecolor='r', alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, ['R', 'Python', 'Java', 'JavaScript', 'PHP'])
ax.set_title("Radar Chart", fontsize=20)
ax.grid(True)
plt.show()
4. 示例说明
4.1 雷达图示例1:绘制多组数据的雷达图
假设我们现在有两组五维数据,例如:
#第一组5维数据
data1 = [20, 30, 25, 35, 27]
#第二组5维数据
data2 = [35, 25, 20, 30, 29]
这时候我们需要绘制多组数据的雷达图,代码如下:
# 数据数目
data_number = 5
# 定义数据
data1 = [20, 30, 25, 35, 27]
data2 = [35, 25, 20, 30, 29]
# 将360度分为data_number份
angles = np.linspace(0, 2*np.pi, data_number, endpoint=False)
# 绘图区域大小
fig = plt.figure(figsize=(6,6))
# 使用极坐标
ax = fig.add_subplot(111, polar=True)
# 绘制折线图(第一个点和最后一个点连线)
ax.plot(np.concatenate((angles,[angles[0]])), np.concatenate((data1,[data1[0]])), 'bo-', linewidth=2)
ax.plot(np.concatenate((angles,[angles[0]])), np.concatenate((data2,[data2[0]])), 'ro-', linewidth=2)
# 填充颜色
ax.fill(np.concatenate((angles,[angles[0]])), np.concatenate((data1,[data1[0]])), facecolor='r', alpha=0.25)
ax.fill(np.concatenate((angles,[angles[0]])), np.concatenate((data2,[data2[0]])), facecolor='b', alpha=0.25)
# 设置网格线角度、标签、颜色、线条样式;
ax.set_thetagrids(angles * 180/np.pi, ['R', 'Python', 'Java', 'JavaScript', 'PHP'])
ax.grid(True)
# 添加标题
ax.set_title("Radar Chart of Multi-Data")
# 显示图形
plt.show()
4.2 雷达图示例2:绘制不同颜色的雷达图
假设我们希望对每个数据的各个维度使用不同的颜色进行绘制。通过为每个角度设置不同的颜色,即可实现不同颜色的雷达图。代码如下:
# 数据数目
data_number = 5
# 定义数据
data = [30, 20, 25, 35, 27]
# 将360度分为data_number份
angles = np.linspace(0, 2*np.pi, data_number, endpoint=False)
# 绘图区域大小
fig = plt.figure(figsize=(6,6))
# 使用极坐标
ax = fig.add_subplot(111, polar=True)
# 绘制折线图(第一个点和最后一个点连线)
ax.plot(np.concatenate((angles,[angles[0]])), np.concatenate((data,[data[0]])), 'bo-', color=['r', 'b', 'g', 'y', 'k'], linewidth=2)
# 填充颜色
ax.fill(np.concatenate((angles,[angles[0]])), np.concatenate((data,[data[0]])), facecolor='r', alpha=0.25)
# 设置网格线角度、标签、颜色、线条样式;
ax.set_thetagrids(angles * 180/np.pi, ['R', 'Python', 'Java', 'JavaScript', 'PHP'])
ax.grid(True)
# 添加标题
ax.set_title("Radar Chart of Different Color")
# 显示图形
plt.show()
以上就是如何用 Python 绘制雷达图的完整攻略,通过以上步骤,你已经可以轻松绘制出优美的雷达图了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用python绘制雷达图 - Python技术站