PythonDOTA人物能力值雷达图label为什么没用?

如题所述

Python可以使用matplotlib或者plotly等库来绘制雷达图,也就是用来显示多变量数据的一种二维图表,每个变量对应一个从中心发出的轴。DOTA是一款多人在线对战游戏,每个英雄都有不同的能力值,可以用雷达图来表示。

如果你想在雷达图上添加标签,也就是每个轴的变量名,你需要注意以下几点:

    如果你使用matplotlib,你需要使用ax.set_varlabels()方法来设置每个轴的标签,而不是使用plt.xlabel()或者plt.ylabel()方法,因为这些方法只适用于直角坐标系。

    如果你使用plotly,你需要使用go.Scatterpolar()函数来创建雷达图的数据,然后使用fig.update_layout()方法来设置每个轴的标签,例如fig.update_layout(polar=dict(radialaxis=dict(tickangle=90))),表示将每个轴的标签旋转90度1。

    如果你使用其他的库,你需要查看它们的文档,找到正确的方法来设置每个轴的标签,或者参考一些在线的示例代码,例如2。

    以下是一个使用matplotlib绘制DOTA人物能力值雷达图的示例代码,其中包含了设置每个轴的标签的方法:

    import matplotlib.pyplot as pltimport numpy as np# 定义每个轴的变量名labels = np.array(['力量', '敏捷', '智力', '攻击', '防御', '移速'])# 定义每个英雄的能力值data = np.array([


    [23, 24, 18, 49, 2, 310], # 敌法师


    [25, 20, 15, 50, 3, 290], # 斧王


    [19, 22, 25, 39, 4, 295]  # 水晶室女])# 定义雷达图的角度angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False)# 使雷达图封闭data = np.concatenate((data, data[:, [0]]), axis=1)


    angles = np.concatenate((angles, [angles[0]]))# 创建一个极坐标图fig = plt.figure()


    ax = fig.add_subplot(111, polar=True)# 绘制每个英雄的能力值ax.plot(angles, data[0], 'o-', linewidth=2, label='敌法师')


    ax.fill(angles, data[0], alpha=0.25)


    ax.plot(angles, data[1], 'o-', linewidth=2, label='斧王')


    ax.fill(angles, data[1], alpha=0.25)


    ax.plot(angles, data[2], 'o-', linewidth=2, label='水晶室女')


    ax.fill(angles, data[2], alpha=0.25)# 设置每个轴的标签ax.set_thetagrids(angles * 180 / np.pi, labels)# 设置雷达图的范围ax.set_ylim(0, 60)# 添加图例ax.legend(loc='best')# 显示图形plt.show()


温馨提示:答案为网友推荐,仅供参考
相似回答