python画红旗代码 (python画美国盾牌)

现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球、王者荣耀里面的那种球员能力图)

用ai画王者荣耀英雄,python画excel

用ai画王者荣耀英雄,python画excel

雷达图函数用到以下

importmath
importnumpyasnp
importmatplotlib.pyplotasplt
importmatplotlib.colorsasmcolors

导入中文相关字体

#导入中文
importmatplotlib.font_managerasfont_manager

font_dirs=['./font']
font_files=font_manager.findSystemFonts(fontpaths=font_dirs)
font_list=font_manager.createFontList(font_files)
font_manager.fontManager.ttflist.extend(font_list)
plt.rcParams['font.family']='SimHei'

#启用主题
plt.style.use('ggplot')

获取极径范围

#获取极径范围
defget_range(data_list):
max=min=0
for_,dataindata_list.items():
forvindata:
ifv<min:
min=v
ifv>max:
max=v
return[min,max]

生成能力分布图

#生成能力分布图
defgenerate_ability_map(abilities,data_list,rows=3):
min,max=get_range(data_list)
#根据能力项等分圆
angles=np.linspace(0,2*np.pi,len(abilities),endpoint=False)
angles=np.append(angles,angles[0])
#生成n个子图
fg,axes=plt.subplots(math.ceil(len(data_list)/rows),rows,subplot_kw=dict(polar=True),figsize=(9,9))
#调整子图间距
plt.subplots_adjust(wspace=0.6,hspace=0.6)
#打散为一维数组
axes=axes.ravel()
#获取所有支持的颜色
colors=list(mcolors.TABLEAU_COLORS)
#循环绘制
i=0
forname,dataindata_list.items():
data=np.append(np.array(data),data[0])
ax=axes[i]
#绘制线条
ax.plot(angles,data,color=colors[i])
#填充颜色
ax.fill(angles,data,alpha=0.7,color=colors[i])
#设置角度
ax.set_xticks(angles)
#设置坐标轴名称
ax.set_xticklabels(abilities)
#设置名称
ax.set_title(name,size=10,color='black',position=(0.5,0.4))
#设置极径最小值
ax.set_rmin(min)
#设置极径最大值(最大值加0.1,要不线条最外圈线显示不完全)
ax.set_rmax(max+0.1)
i=i+1
plt.show()

调用:

#数据
abilities=['灵活性','功能性','平稳性','安全性','耐用性','经济性']
super_heros={
'固定点降落':[2,1,5,5,4,3],
'任意点降落':[5,5,2,3,3,4],
'局部最优点降落':[4,5,4,4,3,4],
}

#画图
generate_ability_map(abilities,super_heros)

程序运行后,得到文中开始的图:

用ai画王者荣耀英雄,python画excel