Python实现热力图的参数详解与代码实例
本文详细介绍Python中绘制热力图的常用方法与关键参数。涵盖Seaborn库中vmax、vmin、cmap等颜色映射配置,以及Gmplot在地图经纬度数据上的热力应用。通过完整代码示例,展示如何生成静态热力图与交互式HTML地图文件,帮助开发者快速掌握数据可视化技巧。
在分析多个变量间的相互关系时,热力图是一种直观的数据展示方式。这种可视化手段广泛应用于实际场景,例如地理空间数据的分布展示。许多开发者对如何高效绘制热力图感到困惑,本文将通过安装必要工具、解析核心参数以及提供具体代码实例,逐步演示热力图的实现过程。
导入必要的Python库
import seaborn as sns
%matplotlib inline
sns.set(font_scale=1.5)
关键参数说明
vmax:用于定义颜色映射的最大值,决定颜色条的上限。
vmin:用于定义颜色映射的最小值,决定颜色条的下限。
cmap:指定颜色映射表(colormap),如'viridis'或'hot',控制整体色调风格。
center:设置颜色映射的中心点,常用于对称数据的可视化,如相关系数矩阵。
annot:布尔值,若为True,则在每个单元格中显示具体数值注释。
fmt:字符串格式说明符,用于控制数值注释的显示格式(如小数位数)。
linewidths:浮点数,控制热力图中各个单元格网格线的宽度。
linecolor:字符串,设置网格分割线的颜色,默认为黑色。
cbar_kws:字典类型,用于自定义颜色条(colorbar)的属性,如标签、刻度等。
mask:布尔型矩阵,若对应位置为True,则该位置数据在热力图中被屏蔽不显示,常用于处理缺失值或相关系数矩阵的下三角部分。
代码实例演示
使用Python生成地图热力图相对简单,主要步骤包括导入gmplot库,将经纬度数据绘制到Google地图上,最后将热力图导出为HTML文件,支持用户进行放大和缩小交互操作。
import gmplot # plot the locations on google map
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv())
import matplotlib.pyplot as plt # data visualization
import seaborn as sns # data visualization
df = pd.read_csv("data.csv")
df = pd.DataFrame(df)
df_td = pd.read_csv("datacopy.csv")
df_td = pd.DataFrame(df_td)
# print df.dtypes
print (df.shape)
print (df_td.shape)
def plot_heat_map(data, number):
latitude_array = data['INTPTLAT'].values
latitude_list = latitude_array.tolist()
print(latitude_list[0])
Longitude_array = data['INTPTLONG'].values
longitude_list = Longitude_array.tolist()
print(longitude_list[0])
# Initialize the map to the first location in the list
gmap = gmplot.GoogleMapPlotter(latitude_list[0], longitude_list[0], 10)
# gmap.scatter(latitude_list, longitude_list, edge_width=10)
gmap.heatmap(latitude_list, longitude_list)
# Write the map in an HTML file
# gmap.draw('Paths_map.html')
gmap.draw('{}_Paths_map.html'.format(number))
plot_heat_map(df,'4')
扩展阅读内容
扩展实例一
# -*- coding: utf-8 -*-
from pyheatmap.heatmap import HeatMap
import numpy as np
N = 10000
X = np.random.rand(N) * 255 # [0, 255]
Y = np.random.rand(N) * 255
data = []
for i in range(N):
tmp = [int(X[i]), int(Y[i]), 1]
data.append(tmp)
heat = HeatMap(data)
heat.clickmap(save_as="1.png") #点击图
heat.heatmap(save_as="2.png") #热图
扩展实例二
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y = np.random.rand(10), np.random.rand(10)
z = (np.random.rand(9000000)+np.linspace(0,1, 9000000)).reshape(3000, 3000)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
以上内容为Python热力图实现的基础指南,更多关于原理及高级应用的资料,建议参考本站其他相关文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









