如何使用Python将数据帧转换为雷达图?

如何使用Python将数据帧转换为雷达图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个数据框,我想变成雷达图。数据帧在运行时如下所示 ╔═══════════════════╗ ║ Col A Col B ║ ╠═══════════════════╣ ║ Home 6.797 ║ ║ Other 3.243 ║ ║ Used 12.567 ║ ║ New 8.985 ║ ║ Service 1.345 ║ ╚═══════════════════╝ 我重新利用了我在另一个有关熊猫和雷达图表的堆栈

我有一个数据框,我想变成雷达图。数据帧在运行时如下所示

╔═══════════════════╗
║ Col A      Col B  ║
╠═══════════════════╣
║ Home       6.797  ║
║ Other      3.243  ║
║ Used       12.567 ║
║ New        8.985  ║
║ Service    1.345  ║
╚═══════════════════╝
我重新利用了我在另一个有关熊猫和雷达图表的堆栈溢出问题上发现的一些代码,它在大多数情况下都有效,只是我无法使B列的值在图表中正确对齐。下面是我正在使用的代码

df['Z'] = np.ones(len(df))
points = mergedFrame.pivot_table(values='Z', index=['Col A'], columns=['Col B'])
fig = plt.figure()
ax = fig.add_subplot(111, projection="polar")

theta = np.arange(len(points))/float(len(points))*2.*np.pi
l1, = ax.plot(theta, color="C2", marker="o", label="Name of Col B")

def _closeline(line):
    x, y = line.get_data()
    x = np.concatenate((x, [x[0]]))
    y = np.concatenate((y, [y[0]]))
    line.set_data(x, y)
[_closeline(l) for l in [l1]]

ax.set_xticks(radar)
ax.set_xticklabels(points.index)
plt.legend()
plt.title("Title")
plt.show()
图表是这样的

因为我还是Python的新手,我不知道我在这里做错了什么。我尝试了很多方法来修改代码,包括删除前两行代码和简单地将
points=df['Col B']
但它所做的只是删除圆圈周围的名称,而其他所有内容保持不变。我做错了什么

还有,我如何用浅绿色填充θ内的区域?我尝试了
l1,=ax.fill(θ,facecolor='g',alpha=0.25)
l1,=ax.plot(θ,color=“C2”,marker=“o”,label=“Col B的名称”)
行下面,但它给了我这个错误
属性错误:“Polygon”对象没有属性“get\u data”
,我似乎无法解决它


非常感谢您的帮助

这里是对处代码的一个改编,让您开始了解数据的存储方式

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
将numpy作为np导入
df=pd.DataFrame({'Col A':['home','other','used','new','service'],
“B列”:[6.797,3.243,12.567,8.985,1.345])
图=plt.图()
ax=图添加子地块(111,投影=“极坐标”)
#θ有5个不同的角度,第一个角度重复
θ=np.arange(len(df)+1)/float(len(df))*2*np.pi
#值具有“Col B”中的5个值,第一个元素重复
值=df['Col B']。值
values=np.append(值,值[0])
#绘制多边形并标记每个角度/值组合的点
l1,=ax.绘图(θ,值,color=“C2”,marker=“o”,label=“Col B的名称”)
plt.xticks(θ[:-1],df['Col A'],颜色为灰色,大小为12)
ax.勾选参数(pad=10)#以增加标签到绘图的距离
#用绿色和一些透明度填充多边形区域
最大填充(θ,值“绿色”,α=0.1)
#plt.legend()#使用线图的标签显示图例(当有多个多边形时有用)
打印标题(“标题”)
plt.show()

这里是对处代码的一个改编,让您开始了解数据的存储方式

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
将numpy作为np导入
df=pd.DataFrame({'Col A':['home','other','used','new','service'],
“B列”:[6.797,3.243,12.567,8.985,1.345])
图=plt.图()
ax=图添加子地块(111,投影=“极坐标”)
#θ有5个不同的角度,第一个角度重复
θ=np.arange(len(df)+1)/float(len(df))*2*np.pi
#值具有“Col B”中的5个值,第一个元素重复
值=df['Col B']。值
values=np.append(值,值[0])
#绘制多边形并标记每个角度/值组合的点
l1,=ax.绘图(θ,值,color=“C2”,marker=“o”,label=“Col B的名称”)
plt.xticks(θ[:-1],df['Col A'],颜色为灰色,大小为12)
ax.勾选参数(pad=10)#以增加标签到绘图的距离
#用绿色和一些透明度填充多边形区域
最大填充(θ,值“绿色”,α=0.1)
#plt.legend()#使用线图的标签显示图例(当有多个多边形时有用)
打印标题(“标题”)
plt.show()

这正是我一直在寻找的,我学到了很多,谢谢!你知道有什么方法可以把xtick标签隔开一点,特别是在家里,这样它就不会与图表重叠了吗?我在文档中找不到任何看起来可以解决这个问题的东西,但我可能完全没有找到。我添加了
ax.tick_params(pad=10)
就是为了这个目标,但没有更新图像这正是我要找的,学到了很多谢谢!你知道有什么方法可以把xtick标签隔开一点,特别是在家里,这样它就不会与图表重叠了吗?我在文档中找不到任何看起来可以解决这个问题的东西,但我可能完全没有找到。我添加了
ax.tick_params(pad=10)
就是为了这个目标,但没有更新图像