Python Seaborn heatmap
什么是Seaborn
seaborn是一个基于python matplotlib的一个数据可视化库,提供了更高级的API接口使得绘制图形更加简单高效。
如何利用seaborn绘制heatmap
seaborn 对应的heatmap 的参数介绍:
seaborn.heatmap — seaborn 0.11.2 documentation (pydata.org)
利用Downloads » Population Count, v4.11: Gridded Population of the World (GPW), v4 | SEDAC (columbia.edu)提供的世界人口的ASCII栅格数据可以绘制目标区域的人口分布热力图。
数据简单介绍
ncols和nrows是数据的列数和行数
xllcorner和yllcorner对应该数据方块的左下角的经度和纬度。
cellsize是每个数据占用的大小,即30/3600维度或经度,换算成长度大约为1km
-9999表示该cell没有数据或数据为0.
具体解释见代码:
# 8 Block data. Data is the total processed # data of eight blocks data = np.array(json.load(open('8_block_data.data'))['res']) population = sum(data[:, 2]) name = ['lon', 'lat', 'population'] df = pd.DataFrame(columns=name, data=data) df = df.pivot('lat', 'lon', 'population') # set figsize = 10 * 10 f, ax = pyplot.subplots(figsize=(10, 10)) # Manually set cmap parameters to modify color matching, refer to:https://seaborn.pydata.org/generated/seaborn.diverging_palette.html#seaborn.diverging_palette # set color palette to produce 1000 reds cmap = sns.color_palette("Reds", 1000) sns.heatmap(df, fmt='.2', robust=True, ax=ax, xticklabels=False, yticklabels=False, cmap=cmap, cbar=True, square=True, cbar_kws={"orientation": "horizontal"}).invert_yaxis() population = int(population) population = str(population) # title set pyplot.title('World Population Density Map' + "(World Population≈" + population+")") # save image dpi = 2000 pyplot.savefig('World Population Density Map' + '.png', dpi=2000) pyplot.show()
效果
效果如图,而且世界总人口计算是莫得问题的。
不得不说,python真的太方便使用了,各种各样的包都有,根本不用动脑子,哈哈哈。