Python畫王者榮耀英雄能力雷達圖
現有以下表格,我需要畫成第二張圖中的雷達圖(類似fifa足球、王者榮耀里面的那種球員能力圖)

雷達圖函數用到以下包:
import?math
import?numpy?as?np
import?matplotlib.pyplot?as?plt
import?matplotlib.colors?as?mcolors
導入中文相關字體
#?導入中文
import?matplotlib.font_manager?as?font_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')
獲取極徑范圍
#?獲取極徑范圍
def?get_range(data_list):
????max?=?min?=?0
????for?_,?data?in?data_list.items():
????????for?v?in?data:
????????????if?v?????????????????min?=?v
????????????if?v?>?max:
????????????????max?=?v
????return?[min,?max]
生成能力分布圖
#?生成能力分布圖
def?generate_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)
????#?循環(huán)繪制
????i?=?0
????for?name,?data?in?data_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?=?['靈活性',?'功能性',?'平穩(wěn)性',?'安全性',?'耐用性',?'經濟性']
super_heros?=?{
????'固定點降落':?[2,1,5,5,4,3],
????'任意點降落':?[5,5,2,3,3,4],
????'局部最優(yōu)點降落':?[4,5,4,4,3,4],
}
#畫圖
generate_ability_map(abilities,?super_heros)
程序運行后,得到文中開始的圖:
歡迎三連支持
評論
圖片
表情
