2024-09-24 02:22:55 发布
网友
我使用熊猫是为了给一些玩家分配分数
我使用相同的KPI计算了每个玩家的一些属性,现在我为每个玩家计算了一行结果
dataframe如下所示(唯一的区别是它有更多的列):
我想画一张雷达图会很好(https://en.wikipedia.org/wiki/Radar_chart) 对于每一行,请使用matplotlib(如果可能)
你会怎么做?
是否有更好的matplotlib替代方案?
谢谢
要获得此蜘蛛外观,您至少需要三列。因此,我在您的数据帧中添加了一个随机列:
import pandas as pd df = pd.DataFrame({"Name": ["G1", "G4"], "Speed": [0.32, 0.31], "ATK": [0.89, 0.76], "Random": [0.4, 0.8]}) print(df) # Name Speed ATK Random #0 G1 0.32 0.89 0.4 #1 G4 0.31 0.76 0.8
现在,让我们看看如何绘制这个简单的数据帧。以下代码改编自this博客文章:
# import necessary modules import numpy as np import matplotlib.pyplot as plt from math import pi # obtain df information categories = list(df)[1:] values = df.mean().values.flatten().tolist() values += values[:1] # repeat the first value to close the circular graph angles = [n / float(len(categories)) * 2 * pi for n in range(len(categories))] angles += angles[:1] # define plot fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 8), subplot_kw=dict(polar=True)) plt.xticks(angles[:-1], categories, color='grey', size=12) plt.yticks(np.arange(0.5, 2, 0.5), ['0.5', '1.0', '1.5'], color='grey', size=12) plt.ylim(0, 2) ax.set_rlabel_position(30) # draw radar-chart: for i in range(len(df)): val_c1 = df.loc[i].drop('Name').values.flatten().tolist() val_c1 += val_c1[:1] ax.plot(angles, val_c1, linewidth=1, linestyle='solid', label=df.loc[i]["Name"]) ax.fill(angles, val_c1, alpha=0.4) # add legent and show plot plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1)) plt.show()
其结果是这样的图形:
要获得此蜘蛛外观,您至少需要三列。因此,我在您的数据帧中添加了一个随机列:
现在,让我们看看如何绘制这个简单的数据帧。以下代码改编自this博客文章:
其结果是这样的图形:
相关问题 更多 >
编程相关推荐