首页 > 技术文章 > Python Seaborn介绍和Seaborn热力图

miao123-blog 2022-01-11 13:48 原文

 

Python Seaborn heatmap

什么是Seaborn

seaborn是一个基于python matplotlib的一个数据可视化库,提供了更高级的API接口使得绘制图形更加简单高效。

https://seaborn.pydata.org/

如何利用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真的太方便使用了,各种各样的包都有,根本不用动脑子,哈哈哈。

 

推荐阅读