You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Anychart热力图中用Double值替代Integer作为热力值?

解决Anychart Riskmap适配Double值显示与配色问题

核心处理方案

不用硬套原有Integer类型heat的索引逻辑,直接将计算出的Double类型VPD值作为核心数据传入,同时通过自定义规则实现方块着色与数值显示,具体步骤如下:

1. 扩展数据条目类存储VPD值

修改CustomHeatDataEntry,新增字段存储Double类型的VPD计算值,原heat参数仅做占位使用:

public class CustomHeatDataEntry extends HeatDataEntry {
    private double vpdValue;

    public CustomHeatDataEntry(String xAxis, String yAxis, double vpd, String blockColor) {
        super(xAxis, yAxis, 0); // heat参数传0占位,后续不再依赖它
        this.vpdValue = vpd;
        setColor(blockColor);
    }

    public double getVpdValue() {
        return vpdValue;
    }
}

2. 传入计算后的VPD数据

针对每个行列组合,计算出VPD值后直接传入自定义数据条目,同时通过规则生成对应颜色:

// 示例:计算50F、98%RH对应的VPD值
double vpdResult = calculateVpd(50, 98); // 替换为你的VPD计算方法
data.add(new CustomHeatDataEntry("98%", "50F", vpdResult, getColorFromVpd(vpdResult)));

3. 配置热力图显示VPD数值

通过标签格式化设置,直接显示自定义的Double类型VPD值,可指定小数位数:

riskmap.labels().enabled(true);
riskmap.labels().format("{%vpdValue:.3f}"); // 显示保留三位小数的VPD值

4. 基于VPD值实现自动配色

编写配色函数,根据VPD数值区间返回对应颜色:

private String getColorFromVpd(double vpd) {
    if (vpd < 1.0) return "#90caf9"; // 低VPD对应浅蓝色
    else if (vpd < 2.0) return "#ffcc80"; // 中VPD对应浅黄色
    else return "#ef5350"; // 高VPD对应浅红色
}

补充说明

如果自定义字段无法被模板引擎直接识别,可通过setField手动绑定:

data.add(new HeatDataEntry("98%", "50F", 0)
        .setField("vpdValue", vpdResult)
        .setColor(getColorFromVpd(vpdResult)));

内容的提问来源于stack exchange,提问作者fiefie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:12:46