如何用Python修复雷达图中的FixedLocator问题?

2024-10-01 00:27:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对使用已定义数据帧的某些特性显示雷达图有一个问题。 当我运行代码时,我收到一条错误消息

我如何解决这个问题

下面是我的dataframe列名,如下所示

Name    PrimaryRole Manufacturer    Country Number  ActiveSince LastBuilt   Retired State   Crew    Length  Wingspan    Height  WingArea    MaxSpeed    Country_Flag_URL

下面是我绘制雷达图的功能,定义如下

def radar_chart(values=[], title= "", saveFile = ""):

    labels=np.array(['Crew',
                     'Length',
                     'Wingspan',
                     'Height',
                     'WingArea',
                     'MaxSpeed'
                    ]
                   )
    
    
    angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
    angles=np.concatenate((angles,[angles[0]]))

    fig=plt.figure(figsize=(6,6))
    plt.suptitle(title, y=1.04)
    for v in values:
        stats=np.array(ww2aircraft_df[ww2aircraft_df["Name"]==v][labels])[0]
        print(stats)
        stats=np.concatenate((stats,[stats[0]]))
        print(stats)
        ax = fig.add_subplot(111, polar=True)
        ax.plot(angles, stats, 'o-', linewidth=2, label = v)
        ax.fill(angles, stats, alpha=0.25)
        ax.set_thetagrids(angles * 180/np.pi, labels) // ISSUE IS HERE

    ax.grid(True)
    #plt.legend(loc="upper right",bbox_to_anchor=(1.2,1.0))
    ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.10),
      fancybox=True, shadow=True, ncol=5, fontsize=13)
    plt.tight_layout()
    plt.savefig('images/' + saveFile, bbox_inches = "tight")
    plt.show()

下面是我的代码片段,如下所示

ww2aircraft_df_top_5 = ww2aircraft_df.sort_values(by="MaxSpeed", ascending = False)
ww2aircraft_df_top_5 = ww2aircraft_df_top_5[:5]
radar_chart(values=ww2aircraft_df_top_5["Name"],
           title="Title", saveFile = "image.png")

下面是错误消息,如下所示

ValueError: The number of FixedLocator locations (7), usually from a call to set_ticks, does not match the number of ticklabels (6).

Tags: nametruedflabelstitletopstatsnp
1条回答
网友
1楼 · 发布于 2024-10-01 00:27:17

在我从功能中删除这两行之后,问题就消失了

angles=np.concatenate((angles,[angles[0]]))
stats=np.concatenate((stats,[stats[0]]))

相关问题 更多 >