'Line2D' 对象没有属性 'column'

vas*_*nth 1 matplotlib dataframe pandas geopandas choropleth

我想根据不同国家的比萨分数创建一个简单的世界等值线图。因此我的 DataFrame 看起来像:

merged = merged[['geometry','Avg_score']]
merged.head()
Run Code Online (Sandbox Code Playgroud)

我的数据框

绘制等值线图:

fig, ax = plt.subplots(1,figsize=(15, 10))


ax.axis('off')
ax.set_title('Education Ranking', fontdict={'fontsize': '35', 'fontweight' : '3'})
merged.plot(column='Avg_score', cmap='Blues_r', scheme='User_Defined',
                    classification_kwds=dict(bins=[325,416,463,499,591]),
                     edgecolor = 'black', linewidth=0.7, ax=ax,legend= True)
leg = ax.get_legend()
leg.set_bbox_to_anchor((1, 0.7, 0.2, 0.2))
 plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误: 'Line2D' object has no property 'column'。可以在这里找到类似的帖子:'Line2D' object has no property 'kind'。无论如何,这里没有完全解决这个问题!任何帮助将不胜感激,因为我被困在这里太久了。

kid*_*lly 5

我遇到了这个完全相同的问题。

简答

尝试将合并的数据框转换为地理数据框

from geopandas import GeoDataFrame

merged = GeoDataFrame(merged)
Run Code Online (Sandbox Code Playgroud)

长答案

由于错误说有一个我的合并对象没有的属性,我尝试检查合并对象的类型。我发现在将数据框与地理数据框合并后,生成的对象是数据框(而不是地理数据框)。

尝试使用以下命令检查合并数据对象的类型

type(merged)
Run Code Online (Sandbox Code Playgroud)

如果它是数据框对象而不是地理数据框对象,geopandas 将不知道如何制作地图。此数据框可以轻松转换为地理数据框,然后使用

首先,确保导入 GeoDataFrame 将数据框转换为地理数据框,

from geopandas import GeoDataFrame
Run Code Online (Sandbox Code Playgroud)

然后将数据框转换为地理数据框,

merged = GeoDataFrame(merged)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。下次遇到这种情况我会尝试一下。 (2认同)