首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geopandas -大陆数据曲线图

Geopandas -大陆数据曲线图
EN

Stack Overflow用户
提问于 2020-10-12 18:30:40
回答 1查看 238关注 0票数 2

我正在尝试用Geopandas绘制大陆上的数据。

我在我的数据透视表中记录了来自每个国家/地区的票数,其中包括以下票数:

代码语言:javascript
复制
    Number of Tickets
region
Africa            370
Americas         1130
Asia              873
Europe            671
Oceania           445

在我的票证列表数据框中,我记录了每个国家的案例。每个国家都映射到一个地区和一个大陆。按照逻辑,每个记录的票证都分配了一个国家、地区和大陆。

为了能够绘制数据,我将Geopandas数据帧(国家/地区几何)与我的票证数据帧合并在3个字母的国家/地区代码上,并确保生成的数据帧是一个地理数据帧:

代码语言:javascript
复制
tickets_region = pd.merge(world, tickets, left_on='ISO_A3', right_on='code-3')

type(tickets_region)
geopandas.geodataframe.GeoDataFrame

我尝试用以下代码绘制数据:

代码语言:javascript
复制
fig, ax = plt.subplots()
ax = tickets_region.plot('continent', cmap='Reds',scheme='headtailbreaks')
ax.tick_params(left=False, labelleft=False, bottom=False, labelbottom=False)
plt.title('Number of Tickets by Continent')
plt.box(False)
plt.show()

然而,这个代码块永远不会结束,它会消耗内存和CPU周期,我必须按Ctrl-C组合键将其删除。同样的代码也适用于“code -3”(由3个字母组成的国家代码。)

我假设这是由于geojson文件中没有定义的“大陆”地理位置,但我希望Python通过将票证数量相加来填充它。我看到我的期望在某处有一个被打破的逻辑,但我看不到这一点。

有没有关于如何让这个大陆图工作的想法?

谢谢。

编辑:"world“数据帧是从https://datahub.io/core/geo-countries下载的geojson文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 21:28:48

您可以使用GeoPandas数据帧中的dissolve()方法。您可以查看GeoPandas文档here。您的代码可以像这样修改:

代码语言:javascript
复制
tickets_region = tickets_region.dissolve(by='continent', aggfunc='sum')

fig, ax = plt.subplots()
ax = tickets_region.plot(column='Number of Tickets', cmap='Reds',scheme='headtailbreaks')
ax.tick_params(left=False, labelleft=False, bottom=False, labelbottom=False)
plt.title('Number of Tickets by Continent')
plt.box(False)
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64316074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档