import numpy as np
import matplotlib.pyplot as plt
# 数据
labels = np.array(['东风', '东北风', '北风', '西北风', '西风', '西南风', '南风', '东南风'])
stats = np.array([2.1, 2, 0, 3, 1.5, 3, 6, 4])
# 将角度转换为弧度
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
# 使图形闭合
stats = np.concatenate((stats, [stats[0]]))
angles += angles[:1]
# 绘图
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(polar=True))
ax.fill(angles, stats, color='blue', alpha=0.25)
ax.plot(angles, stats, color='blue', linewidth=4) # 绘制线条
# 添加标签
ax.set_xticklabels(labels)
num_points = 100 # 增加角度的细分点数
angles = np.linspace(0, 2 * np.pi, num_points, endpoint=False).tolist()
# 重新计算 stats 的值,以匹配增加的角度点数
stats_interp = np.interp(np.linspace(0, len(stats) - 1, num_points), np.arange(len(stats)), stats)
stats = np.concatenate((stats_interp, [stats_interp[0]]))
angles += angles[:1]
ax.set_xticks(np.linspace(0, 2 * np.pi, len(labels), endpoint=False))
ax.set_xticklabels(labels, fontsize=12) # 调整标签字体大小
ax.set_rticks(np.arange(0, 8 + 1, 1)) # 设置径向刻度,最大值为 8
ax.tick_params(axis='both', which='major', labelsize=10) # 调整刻度标签字体大小
# 添加标题
ax.set_title('风力属性')
plt.show()