Python实现热力图的参数详解与代码实例

山海之间
山海之间
发布时间:2026-10-15 | 4人浏览过
原创

本文详细介绍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热力图实现的基础指南,更多关于原理及高级应用的资料,建议参考本站其他相关文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表