即使我的地图中存在 NaN 数据,是否仍然可以显示形状轮廓?

Is there a way to still display shape outline even when NaN data are present in my map?

我正在尝试以地图格式显示状态 csv 数据并用数据注释状态。有些州没有数据(nan),当我绘制时,这些没有数据的州就消失了。我希望这些状态看起来静止,但只是空白。我尝试使用 fillna("") 函数,但现在我的颜色图显示不正确,每个标签后出现小数点“.0”。下面是我的代码:

csv = pd.read_csv(r'C:\Downloads\Data.csv')
sf = r'C:\Downloads\s_11au16\s_11au16.shp'
US = gpd.read_file(sf)

#Merge them
data = gpd.GeoDataFrame(csv.merge(US)).fillna("")
#set projection
df1 = data.to_crs(epsg=6923)
df1

#set up basemap
ax = df1.plot(figsize = (12,8), column="data", cmap="Greens", edgecolor='k', linewidth=.5, vmin=40, vmax=80)
ax.set_axis_off()

#annotate
df1.apply(lambda x: ax.annotate(text=x['data'], xy=x.geometry.centroid.coords[0], ha='center', fontsize=14,path_effects=[pe.withStroke(linewidth=3, foreground="white")]), axis=1)

Output map result

因此,在使用 fillna("") 函数时,有什么方法可以恢复我的颜色图并去掉标签后的小数点吗?还是有另一种方法可以做到这一点?下面是地图在没有嵌入 fillna("") 函数的情况下的样子的另一张图片。我希望删除这些 nan 标签,但将那些州边界放回原处,并删除小数点。

Output 2, without fillna

请参阅有关使用缺失数据绘图的文档 https://geopandas.org/en/stable/docs/user_guide/mapping.html#missing-data。您需要指定 missing_kwds 包含样式,因为它们无法从数据中推断出来。

ax = df1.plot(
    figsize = (12,8), 
    column="data", 
    cmap="Greens", 
    edgecolor='k', 
    linewidth=.5, 
    vmin=40, 
    vmax=80, 
    missing_kwds={
        "color": "lightgrey",
        "edgecolor": "k",
        "label": "Missing values",
    },)