import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import io

# --- 1. 样式配置 ---
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']
plt.style.use('ggplot')

# --- 2. 准备数据 ---
# df = pd.read_csv('grades.csv')
csv_data = """课程,分数
高等数学,85
大学物理,92
线性代数,78
程序设计,95
大学英语,88
思想政治,82
"""
df = pd.read_csv(io.StringIO(csv_data))

# 提取标签和数值
labels = df['课程'].values
scores = df['分数'].values
num_vars = len(labels)

# 计算角度并闭合图形
angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()
angles += angles[:1]
scores_closed = np.concatenate((scores, [scores[0]]))

# --- 3. 绘图 ---
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))

# 绘制雷达图的数据线和填充区域
ax.plot(angles, scores_closed, color='skyblue', linewidth=2)
ax.fill(angles, scores_closed, color='skyblue', alpha=0.4)

ax.set_ylim(0, 100)

ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels, size=12)

ax.set_theta_offset(np.pi / 2)
ax.set_theta_direction(-1)

# 添加标题
ax.set_title("本学期各科成绩雷达图", size=20, pad=25)

ax.spines['polar'].set_visible(False)
ax.grid(color='grey', linestyle='--', linewidth=0.5)

plt.tight_layout()
plt.show()
