如何绘制地图中带异色网格的热力图?Python适用库咨询
绘制网格热力图的Python库推荐
这类带不同颜色网格的热力图,Python中最常用的两个库是Seaborn和Matplotlib,以下是具体实现方式:
1. Seaborn(推荐,开箱即用)
Seaborn的heatmap函数专门适配这类网格热力图场景,默认支持网格线、颜色映射配置,代码简洁易读:
import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 模拟网格数据(对应每个网格的统计值,比如目的地概率、出行频次) grid_data = np.random.rand(20, 20) # 20x20的网格矩阵 plt.figure(figsize=(8, 6)) # 绘制热力图:设置颜色映射、网格线宽度/颜色 sns.heatmap( grid_data, cmap='viridis', # 颜色方案,可替换为'coolwarm'等 linewidths=0.5, # 网格线宽度 linecolor='white', # 网格线颜色 annot=False, # 是否显示网格内数值,按需开启 cbar=True # 显示颜色标尺 ) plt.title('Grid-based Destination Probability Heatmap') plt.show()
2. Matplotlib(更灵活,适合深度自定义)
如果需要更精细的自定义控制,用Matplotlib的pcolormesh函数可以实现同样效果:
import matplotlib.pyplot as plt import numpy as np grid_data = np.random.rand(20, 20) # 定义网格的坐标范围(若对应经纬度,替换为实际范围即可) x_coords = np.arange(grid_data.shape[1] + 1) y_coords = np.arange(grid_data.shape[0] + 1) plt.figure(figsize=(8, 6)) # 绘制颜色网格 mesh = plt.pcolormesh(x_coords, y_coords, grid_data, cmap='viridis') # 添加网格线 plt.grid(True, color='white', linewidth=0.5, linestyle='-') # 显示颜色标尺 plt.colorbar(mesh, label='Probability') plt.title('Grid-based Heatmap with Matplotlib') plt.show()
补充说明
这类图的核心逻辑是:将目标区域划分为规则网格,每个网格对应一个统计数值(比如论文中出租车前往该区域的概率),用颜色深浅直观展示数值差异,网格线用于区分不同网格单元。如果需要结合真实地理坐标,只需将x_coords和y_coords替换为实际的经纬度区间即可。
内容的提问来源于stack exchange,提问作者ivygrowing
相关产品推荐
相关产品推荐

