【Python基础】Python画王者荣耀英雄能力雷达图
生活随笔
收集整理的這篇文章主要介紹了
【Python基础】Python画王者荣耀英雄能力雷达图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現有以下表格,我需要畫成第二張圖中的雷達圖(類似fifa足球、王者榮耀里面的那種球員能力圖)
雷達圖函數用到以下包:
import?math import?numpy?as?np import?matplotlib.pyplot?as?plt import?matplotlib.colors?as?mcolors導入中文相關字體
#?導入中文 import?matplotlib.font_manager?as?font_managerfont_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?=?0for?_,?data?in?data_list.items():for?v?in?data:if?v?<?min:min?=?vif?v?>?max:max?=?vreturn?[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)#?循環繪制i?=?0for?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?+?1plt.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)程序運行后,得到文中開始的圖:
總結
以上是生活随笔為你收集整理的【Python基础】Python画王者荣耀英雄能力雷达图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊聊工业界做机器学习的里程碑
- 下一篇: 【机器学习基础】机器学习中类别变量的编码