"""
author:魏振东
data:2019.12.13
func:雷达图
"""
import numpy as np
import matplotlib.pyplot as plt
#标签
# 团战10,发育7,输出12,KDA9,生存3
labels = np.array(['团战','发育','输出','KDA','生存'])
#数据个数
dataLenth = 5
#数据
data = np.array([10,7,12,9,3])
# 分割圆周长
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
# 闭合
data = np.concatenate((data, [data[0]]))
# 闭合
angles = np.concatenate((angles, [angles[0]]))
# 设置画布大小
fig = plt.figure(figsize=(5,5))
# 这里一定要设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
# 画若干个五边形
floor = np.floor(data.min()) # 大于最小值的最大整数
ceil = np.ceil(data.max()) # 小于最大值的最小整数
# np.arange()函数分为一个参数,两个参数,三个参数三种情况
# 1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
# 2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
# 3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。
for i in np.arange(floor, ceil +2,2):
ax.plot(angles, [i] * (int(len(labels)) + 1), '-', lw=0.3, color='black')
# 设置背景坐标系
ax.spines['polar'].set_visible(False) # 不显示极坐标最外圈的圆
ax.grid(False) # 不显示默认的分割线
ax.set_yticks([]) # 不显示坐标间隔
# 做极坐标系
ax.plot(angles, data, 'ro-', linewidth=2)
# 做标签
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
# 填充
ax.set_title("王者战绩", va='bottom', fontproperties="SimHei")
ax.grid(True)
plt.show()
来源:CSDN
作者:魏振东
链接:https://blog.csdn.net/wei_zhen_dong/article/details/103586420