• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python爬取王者荣耀英雄能力数据,雷达图显示数据

python 搞java代码 3年前 (2022-05-21) 30次浏览 已收录 0个评论

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

以下文章来源于Python小例子,作者 无尘

转载地址

<code><span class="hljs-attribute">https:<span class="hljs-comment">//www.gaodaima.<a href="https://www.gaodaima.com/tag/com" title="查看更多关于com的文章" target="_blank">com</a>/fei347795790?t=1</span></span></code>

www#gaodaima.com来源gaodai#ma#com搞@@代~&码*网搞代码

 

 

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

 

 

 

雷达图函数用到以下包:

<span><a href="https://www.gaodaima.com/tag/import" title="查看更多关于import的文章" target="_blank">import</a></span><span> math
</span><span>import</span><span> numpy as np
</span><span>import</span><span> matplotlib.pyplot as plt
</span><span>import</span> matplotlib.colors as mcolors

 

导入中文相关字体

<span>#</span><span> 导入中文</span>
<span>import</span><span> matplotlib.font_manager as font_manager

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

<span>#</span><span> 启用主题</span>
plt.style.use(<span>"</span><span>ggplot</span><span>"</span>)

 

获取极径范围

<span>#</span><span> 获取极径范围</span>
<span>def</span><span> get_range(data_list):
    max </span>= min =<span> 0
    </span><span>for</span> _, data <span>in</span><span> data_list.items():
        </span><span>for</span> v <span>in</span><span> data:
            </span><span>if</span> v <<span> min:
                min </span>=<span> v
            </span><span>if</span> v ><span> max:
                max </span>=<span> v
    </span><span>return</span> [min, max]

 

生成能力分布图

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

 

调用:

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

</span><span>#</span><span>画图</span>
generate_ability_map(abilities, super_heros)

 

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python爬取王者荣耀英雄能力数据,雷达图显示数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址