使用 plotly 绘制 geopandas 数据框

Poo*_*pah 7 python plotly geopandas

我有一个 geopandas 数据框,它由区域名称(District)、几何列和数量列组成。我的目标是使用下面提到的方法绘制一个等值线图 https://plotly.com/python/choropleth-maps/#using-geopandas-data-frames

这是我的数据框的片段

我还检查了我的列的格式/类型是否正确。

在此处输入图片说明

这是我用来绘制地图的代码

fig = px.choropleth(merged,

                   geojson=merged.geometry,

                   locations=merged.index,

                   color="Amount")

fig.update_geos(fitbounds="locations", visible=False)

fig.show()
Run Code Online (Sandbox Code Playgroud)

它产生了下图

在此处输入图片说明

这显然不是正确的数字。由于某些原因,它不显示地图,而是显示一条线,当我放大时,我能够看到地图,但它有线穿过它。像这样

在此处输入图片说明

有没有人遇到过类似的问题?如果是这样,你是如何解决的?

我使用的 Plotly 版本是 4.7.0。我已经尝试升级到最新版本,但仍然无法正常工作。

任何帮助是极大的赞赏。请在我的github上找到我的代码和数据。

r-b*_*ers 14

我会给你答案@tgrandje 的评论解决了这个问题。感谢@Poopah 和@tgrandje 有机会提出答案。

import pandas as pd
import plotly.express as px
import geopandas as gpd
import pyproj

# reading in the shapefile
fp = "./data/"
map_df = gpd.read_file(fp)
map_df.to_crs(pyproj.CRS.from_epsg(4326), inplace=True)

df = pd.read_csv("./data/loans_amount.csv")
# join the geodataframe with the cleaned up csv dataframe
merged = map_df.set_index('District').join(df.set_index('District'))
#merged = merged.reset_index()
merged.head()

fig = px.choropleth(merged, geojson=merged.geometry, locations=merged.index, color="Amount")
fig.update_geos(fitbounds="locations", visible=False)

fig.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明