matplotlib 使用geopandas.geodaframe.plot更改图例标记的形状

a7qyws3x  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(270)

我喜欢下面的语法来制作Map的便利性:

import geopandas 
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world.plot(column='continent',legend=True,legend_kwds = {'loc':'lower left'})

然而,我正在寻找一种方法来改变它产生的标记的形状。默认情况下(使用非连续变量),geopandas(或matplotlib)产生填充的圆圈。
我真的希望这些标记被填充在一个薄的黑色边框矩形。
我试过在plot中使用marker参数,但没有成功。我还试过在legend_kwds中使用各种参数。

s4chpxco

s4chpxco1#

使用geopandas很难找到编辑图例属性或获取图例对象的方法。
首先,从plot语句中获取axis

ax = world.plot( ... )

轴提供了对所有绘图组件的访问以及许多用于操作绘图的功能,包括图例。
一旦你得到了图例,你可以根据需要改变它的属性。在下面的代码中,标记的形状,边缘颜色,边缘宽度都是根据需要设置的。

import geopandas 
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
ax = world.plot(figsize=(12,9) ,column='continent',legend=True,legend_kwds = {'loc':'lower left'})

leg1 = ax.get_legend()
for ea in leg1.legendHandles:
    ea.set_marker('s')
    ea.set_markeredgecolor('k')
    ea.set_markeredgewidth(0.5)

据我所知,plot语句中的选项legend_kwds不包括设置图例标记形状的项。

相关问题