pyecharts地图热力图API:参数配置与示例代码

pyecharts地图热力图API:参数配置与示例代码

【免费下载链接】pyecharts 🎨 Python Echarts Plotting Library 【免费下载链接】pyecharts 项目地址: https://gitcode.com/gh_mirrors/py/pyecharts

热力图(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_namestr系列名称-
yaxis_dataSequenceY轴数据-
valueSequence热力图数据,格式为[[x, y, value], ...]-
coordinate_systemstr坐标系类型,可选"cartesian2d"或"geo""cartesian2d"
point_sizeNumeric点大小None
blur_sizeNumeric模糊大小None
min_opacityNumeric最小透明度None
max_opacityNumeric最大透明度None
label_optsLabelOpts标签配置项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_opacitymax_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';
            }
        """)
    )
)

常见问题解决

  1. 热力图不显示:检查是否忘记添加visualmap_opts配置,热力图必须配合视觉映射组件使用
  2. 地理坐标错误:确保城市名称在city_coordinates.json中存在
  3. 颜色范围异常:通过visualmap_optsmin_max_参数明确设置数值范围
  4. 渲染性能问题:大数据量时可降低point_sizeblur_size参数值

总结

pyecharts热力图API提供了从简单到复杂的完整功能支持,通过灵活的参数配置可以满足各种数据可视化需求。核心要点包括:

  • 理解热力图数据格式:[[x, y, value], ...]
  • 合理配置视觉映射组件控制颜色显示
  • 根据场景选择合适的坐标系(笛卡尔/地理)
  • 利用交互配置增强用户体验

更多高级用法可参考官方测试用例test/test_heatmap.py和组件定义文件heatmap.py

【免费下载链接】pyecharts 🎨 Python Echarts Plotting Library 【免费下载链接】pyecharts 项目地址: https://gitcode.com/gh_mirrors/py/pyecharts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值