经过这一系列操作,我们就得到了id为21的网格下车点分布结果,将上述过程利用循环推广到每个网格,并将最后的计算结果合并为一张GeoDataFrame,即表draw_base。
2.2 绘制图像最终我们对draw_base表进行可视化,这里为了显示更加自然,对下车记录进行了对数化+自然间断处理:
%matplotlib inline fig, ax = plt.subplots(figsize=(12, 12)) # 绘制每个镶嵌小网格的轮廓 ax = ( draw_base .plot(facecolor='none', edgecolor='lightgrey', ax=ax, linewidth=0.3) ) # 绘制每个镶嵌小网格的下车记录数热力分布 ax = ( draw_base .assign(下车记录数=np.log(draw_base.下车记录数)) .plot(column='下车记录数', scheme='NaturalBreaks', k=5, cmap='YlOrRd', ax=ax, alpha=0.7) ) # 绘制原始网格的框架 ax = manhattan_grids.plot(ax=ax, facecolor='none', edgecolor='black', linewidth=0.8) # 在每个原始网格中标记出对应位置的镶嵌小网格 ax = ( draw_base .query('是否为目标网格 == 1') .plot(facecolor='none', edgecolor='black', linestyle='--', ax=ax) ) # 设置绘图区域范围 minx, miny, maxx, maxy = manhattan_grids.total_bounds ax.set_xlim(minx, maxx) ax.set_ylim(miny, maxy) # 关闭坐标轴 ax.axis('off') # 添加在线底图 ctx.add_basemap(ax, source='https://d.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', zoom=12) # 保存图像 fig.savefig('图10.png', dpi=500, bbox_inches='tight', pad_inches=0) 图10通过这种表达方式,我们可以很明显地看出不同区域相对其他区域出行模式的不同,你还可以根据自己的需要,对上述绘图逻辑进行调整,譬如每个原始网格内部色彩独立映射等。