pyecharts地图热力图API:参数配置与示例代码
热力图(HeatMap)是一种通过颜色变化来直观展示数据密度的可视化图表,特别适合分析时间分布、区域热度等场景。pyecharts提供了灵活的热力图API,支持多种参数配置和交互效果。本文将详细介绍地图热力图的核心参数、配置方法及完整示例代码,帮助你快速实现专业的数据可视化效果。
热力图基础架构
pyecharts热力图的核心实现位于pyecharts/charts/basic_charts/heatmap.py,继承自RectChart基类,需配合视觉映射组件(VisualMap)使用。热力图通过二维坐标系展示数据,其中:
- X轴和Y轴定义数据维度
- 颜色深浅表示数值大小
- 支持笛卡尔坐标系和地理坐标系两种模式
核心参数详解
1. 初始化参数
HeatMap(
init_opts: types.Init = opts.InitOpts(), # 初始化配置项
render_opts: types.RenderInit = opts.RenderOpts() # 渲染配置项
)
初始化配置项InitOpts支持设置画布大小、背景色等基础属性,详细定义见pyecharts/options/series_options.py第9-16行的BasicOpts类。
2. 数据添加参数
add_yaxis方法是添加热力图数据的核心接口,关键参数包括:
| 参数名 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| series_name | str | 系列名称 | - |
| yaxis_data | Sequence | Y轴数据 | - |
| value | Sequence | 热力图数据,格式为[[x, y, value], ...] | - |
| coordinate_system | str | 坐标系类型,可选"cartesian2d"或"geo" | "cartesian2d" |
| point_size | Numeric | 点大小 | None |
| blur_size | Numeric | 模糊大小 | None |
| min_opacity | Numeric | 最小透明度 | None |
| max_opacity | Numeric | 最大透明度 | None |
| label_opts | LabelOpts | 标签配置项 | opts.LabelOpts() |
完整参数列表可查看
heatmap.py第24-51行的add_yaxis方法定义
3. 视觉映射配置
热力图必须配合VisualMapOpts使用,用于控制颜色映射范围和显示效果:
set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=0, # 最小值
max_=100, # 最大值
orient="horizontal", # 水平/垂直布局
pos_right="center", # 位置
range_text=["高", "低"], # 文本标签
is_calculable=True # 是否显示拖拽手柄
)
)
地理热力图实现示例
基础示例:周内时段活跃度热力图
import random
from pyecharts import options as opts
from pyecharts.charts import HeatMap
from pyecharts.faker import Faker
# 生成模拟数据:24小时×7天的随机值
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
c = (
HeatMap()
.add_xaxis(Faker.clock) # X轴:24小时
.add_yaxis(
"活跃度", # 系列名称
Faker.week, # Y轴:星期
value, # 数据
label_opts=opts.LabelOpts(is_show=True), # 显示标签
)
.set_global_opts(
title_opts=opts.TitleOpts(title="用户活跃度热力图"),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=50,
range_text=["高", "低"],
orient="horizontal",
pos_right="center"
),
xaxis_opts=opts.AxisOpts(type_="category"),
yaxis_opts=opts.AxisOpts(type_="category")
)
)
c.render("heatmap_basic.html")
该示例基于
test/test_heatmap.py第12-20行的测试用例修改
进阶示例:地理坐标系热力图
from pyecharts import options as opts
from pyecharts.charts import HeatMap, Geo
from pyecharts.datasets import register_url
# 注册地图数据(国内CDN)
register_url("https://assets.pyecharts.org/assets/maps")
# 城市坐标数据来自[datasets/city_coordinates.json](https://link.gitcode.com/i/bb4f0a19f43adb713136fd90031a2560)
data = [
["北京", 350], ["上海", 420], ["广州", 300], ["深圳", 280],
["杭州", 220], ["成都", 180], ["武汉", 160], ["西安", 140]
]
# 转换为热力图格式:[[经度, 纬度, 数值], ...]
heat_data = []
for city, value in data:
if city in Geo.cities_coords:
lon, lat = Geo.cities_coords[city]
heat_data.append([lon, lat, value])
c = (
HeatMap()
.add_xaxis([]) # 地理坐标系不需要显式X轴数据
.add_yaxis(
"城市热度",
[], # 地理坐标系不需要显式Y轴数据
heat_data,
coordinate_system="geo", # 使用地理坐标系
point_size=15,
blur_size=20
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=100,
max_=500,
range_text=["热度高", "热度低"],
calculable=True,
orient="horizontal"
),
geo_opts=opts.GeoOpts(
maptype="china",
zoom=1.2,
itemstyle_opts=opts.ItemStyleOpts(
area_color="#f8f9fa",
border_color="#e0e0e0"
)
)
)
)
c.render("geo_heatmap.html")
高级配置技巧
1. 透明度控制
通过min_opacity和max_opacity参数可实现热力图的透明度渐变效果:
.add_yaxis(
"系列名称",
y_data,
value_data,
min_opacity=0.3, # 最小值透明度
max_opacity=0.8, # 最大值透明度
)
2. 交互效果配置
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
formatter=JsCode("function(params){return params.data[2]}") # 自定义提示框
),
visualmap_opts=opts.VisualMapOpts(
is_calculable=True, # 显示拖拽手柄
orient="vertical", # 垂直布局
pos_right=20,
pos_bottom=20
)
)
3. 样式美化
通过itemstyle_opts自定义热力图区块样式:
.add_yaxis(
"系列名称",
y_data,
value_data,
itemstyle_opts=opts.ItemStyleOpts(
color=JsCode("""
function(params) {
return params.data[2] > 30 ? '#ff4d4f' : '#36cbcb';
}
""")
)
)
常见问题解决
- 热力图不显示:检查是否忘记添加
visualmap_opts配置,热力图必须配合视觉映射组件使用 - 地理坐标错误:确保城市名称在
city_coordinates.json中存在 - 颜色范围异常:通过
visualmap_opts的min_和max_参数明确设置数值范围 - 渲染性能问题:大数据量时可降低
point_size和blur_size参数值
总结
pyecharts热力图API提供了从简单到复杂的完整功能支持,通过灵活的参数配置可以满足各种数据可视化需求。核心要点包括:
- 理解热力图数据格式:[[x, y, value], ...]
- 合理配置视觉映射组件控制颜色显示
- 根据场景选择合适的坐标系(笛卡尔/地理)
- 利用交互配置增强用户体验
更多高级用法可参考官方测试用例test/test_heatmap.py和组件定义文件heatmap.py。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




