这样我们就得到了图4,需要注意的是,geoplot.choropleth()只能绘制地区分布图,传入面数据后hue参数必须指定对应映射列,否则会报错,因此这里我们叠加纽约州和新泽西州单独面图层时使用的是polyplot()。
2.2 Kdeplotgeoplot中的kdeplot()对应核密度图,其基于seaborn中的kdeplot(),通过对矢量点数据分布计算核密度估计,从而对点数据进行可视化,可用来展示点数据的空间分布情况,其主要参数如下:
df:传入对应的存放点数据的GeoDataFrame对象
projection:用于指定投影坐标系,传入geoplot.crs中的对象
cmap:和matplotlib中的cmap使用方式一致,用于控制色彩映射方案
clip:GeoSeries型,用于为初始生成的核密度图像进行蒙版裁切,下文会举例说明
extent:元组型,用于传入左下角和右上角经纬度信息来设置地图空间范围,格式为(min_longitude, min_latitude, max_longitude, max_latitude)
figsize:元组型,用于控制画幅大小,格式为(x, y)
ax:matplotlib坐标轴对象,如果需要在同一个坐标轴内叠加多个图层就需要用这个参数传入先前待叠加的ax
shade:bool型,当设置为False时只有等值线被绘制出,当设置为True时会绘制核密度填充
shade_lowest:bool型,控制是否对概率密度最低的层次进行填充,下文会举例说明
n_levels:int型,控制等值线数量,即按照概率密度对空间进行均匀划分的数量
下面我们回到上一篇文章开头的例子——纽约车祸记录数据,在其他参数均为默认的情况下,调用kdeplot对车祸记录点数据的空间分布进行可视化:
# 图层1:行政边界 ax = gplt.polyplot(df=nyc_boroughs, projection=gcrs.AlbersEqualArea()) # 图层2:默认参数下的kdeplot ax = gplt.kdeplot(df=nyc_collision_factors, cmap='Reds', ax=ax) # 保存图像 plt.savefig('图5.png', dpi=300, pad_inches=0, bbox_inches='tight') 图5可以看到,在kdeplot()主要参数均为默认值的情况下,我们得到了点数据空间分布的概率估计结果及其等高线,譬如图中比较明显能看到的两个点分布较为密集的中心,下面我们调整n_levles参数到比较大的数字:
# 图层1:行政边界 ax = gplt.polyplot(df=nyc_boroughs, projection=gcrs.AlbersEqualArea()) # 图层2:kdeplot ax = gplt.kdeplot(df=nyc_collision_factors, cmap='Reds', n_levels=30, ax=ax, figsize=(8, 8)) # 保存图像 plt.savefig('图6.png', dpi=300, pad_inches=0, bbox_inches='tight') 图6