我有一个8列3行excel数据表,列名为'类群', '姓名', '教学力1', '育人力1', '研究力1', '教学力2', '育人力2', '研究力2'。现在想将这3行数据放在同一张雷达图中显示。请你编写一段代码。
时间: 2024-09-13 14:04:10 浏览: 26
在Python中,你可以使用`matplotlib`库来绘制雷达图。首先,你需要安装`matplotlib`库(如果尚未安装),然后使用它来绘制雷达图。以下是使用`pandas`处理数据和`matplotlib`绘制雷达图的一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from math import pi
# 创建数据
data = {
'类群': ['A', 'B', 'C'],
'姓名': ['张三', '李四', '王五'],
'教学力1': [80, 70, 60],
'育人力1': [90, 85, 75],
'研究力1': [85, 75, 80],
'教学力2': [80, 70, 60],
'育人力2': [90, 85, 75],
'研究力2': [85, 75, 80],
}
df = pd.DataFrame(data)
# 获取列名,用于绘图
labels = df.columns[2:]
# 设置雷达图的角度,每个数据变量占据的角度
angles = [n / float(len(labels)) * 2 * pi for n in range(len(labels))]
angles += angles[:1] # 使雷达图封闭起来
# 绘制雷达图
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
for i in range(3):
values = df.iloc[i, 2:].values.flatten().tolist()
values += values[:1] # 使雷达图封闭起来
ax.plot(angles, values, linewidth=1, linestyle='solid', label=df['姓名'][i])
# 填充雷达图
ax.fill(angles, values, alpha=0.25)
# 设置雷达图的标签
plt.xticks(angles[:-1], labels)
# 添加图例
ax.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1))
# 显示图形
plt.show()
```
在上述代码中,我们首先创建了一个包含所有数据的`DataFrame`对象,然后根据数据列名提取雷达图的标签,并计算出每个标签对应的角度。接着,对于每行数据(即每个人),我们提取相应的数值,并使用`matplotlib`的`plot`函数在极坐标图上绘制线条。最后,使用`fill`函数为雷达图填充颜色,并通过`legend`显示图例,`plt.show()`展示最终的图形。
请确保在运行代码之前已经安装了`pandas`和`matplotlib`库。
阅读全文