用python简单绘制雷达图并运行
时间: 2024-03-06 12:49:44 浏览: 22
好的,以下是一个使用 Python 绘制雷达图的示例代码,您可以尝试运行它:
```python
import numpy as np
import matplotlib.pyplot as plt
# 数据
categories = ['销售', '市场', '研发', '财务', '客服']
values = [3, 4, 2, 3, 5]
# 计算角度
N = len(categories)
angles = [n / float(N) * 2 * np.pi for n in range(N)]
angles += angles[:1]
# 绘图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2)
ax.fill(angles, values, alpha=0.25)
ax.set_thetagrids(np.degrees(angles), categories)
ax.set_title('部门评分', fontsize=14)
ax.grid(True)
# 显示图形
plt.show()
```
这段代码将会绘制一个简单的雷达图,其中 `categories` 变量表示雷达图的每个数据轴的名称,`values` 变量表示每个数据轴上的值。您可以根据需要修改这些变量的值以及图表的标题等属性。运行代码后将会显示出绘制的雷达图。
相关问题
用python简单绘制雷达图
好的,以下是一个简单的用Python绘制雷达图的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 数据
labels = ['A', 'B', 'C', 'D', 'E']
data = np.array([8, 7, 6, 9, 8])
# 设置雷达图角度,用于平分成五份
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False)
# 使雷达图封闭起来
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
# 绘图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, data, 'o-', linewidth=2)
ax.fill(angles, data, alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, labels)
ax.set_title("Radar Chart")
ax.grid(True)
plt.show()
```
这个例子绘制了一个五边形的雷达图,数据分别是 A、B、C、D、E 五个维度的值。你可以根据自己的需求修改数据和标签,生成不同的雷达图。
用python绘制成绩雷达图
好的,Python有很多绘图库可以用来绘制雷达图,比如matplotlib和plotly。这里我以matplotlib为例,演示如何读取附件中的文件,并绘制成绩雷达图。
首先,假设附件中的文件是一个CSV格式的文件,包含学生姓名和成绩。我们可以使用Python内置的csv模块来读取该文件。以下是读取CSV文件并将数据存储到列表中的示例代码:
```python
import csv
scores = []
with open('score.csv') as f:
reader = csv.reader(f)
for row in reader:
scores.append(row)
```
接下来,我们需要将成绩数据转换成适合绘制雷达图的格式。雷达图需要将数据转换成极坐标系下的坐标点,因此我们需要计算每个学生的各个成绩对应的坐标点。以下是将成绩数据转换成坐标点的示例代码:
```python
import numpy as np
# 将学科名称和对应的角度转换成字典
subject_angles = {'Chinese': 90, 'Math': 30, 'English': 330, 'Physics': 270, 'Chemistry': 210, 'Biology': 150}
# 计算每个学生各个成绩对应的坐标点
data = []
for s in scores:
name = s[0]
values = [float(x) for x in s[1:]]
angles = [subject_angles[k] for k in subject_angles.keys()]
values += values[:1]
angles += angles[:1]
data.append((name, angles, values))
```
最后,我们使用matplotlib库来绘制雷达图。以下是绘制雷达图的示例代码:
```python
import matplotlib.pyplot as plt
# 设置雷达图的坐标轴标签和范围
labels = list(subject_angles.keys())
angles = list(subject_angles.values())
angles += angles[:1]
plt.polar(angles, labels=labels, color='k', linewidth=1)
# 绘制每个学生的雷达图
for d in data:
name, angles, values = d
values += values[:1]
ax = plt.subplot(111, polar=True)
ax.plot(angles, values, 'o-', label=name)
ax.fill(angles, values, alpha=0.25)
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
plt.ylim(0, 100)
plt.legend(loc='upper right', bbox_to_anchor=(1.1, 1.1))
plt.show()
```
这样,我们就可以绘制出每个学生的成绩雷达图了。当然,您需要根据具体的数据格式和绘图需求进行相应的调整。