echarts 自定义tooltip
在这个配置中,formatter 函数首先显示了 X 轴的文字内容,然后遍历所有传递给它的参数。对于每个数据项,它使用 item.marker 来获取默认的颜色标记,从而保留了原有的图标样式。接着,它对数值进行了四舍五入处理,并使用内联样式设置了 line-height 以增加行间的空白。这种方法确保了你既能够自定义 tooltip 的内容,又不会丢失 ECharts 提供的默认样式和图标。来获取
方法1:完全重写提示框区域
tooltip: {
trigger: 'axis',
formatter: function (params) {
if (!params.length) return '';
const style = 'style="line-height: 1.5; margin-bottom: 4px;"';
let result = `<div ${style}><strong>${params[0].axisValue}</strong></div>`;
params.forEach(function (item) {
let displayValue;
if (item.value !== null && typeof item.value === 'number') displayValue = parseFloat(item.value).toFixed(2);
else displayValue = '-'; // 如果值是 null 或者其他非数值类型,则保持-
result += `<div ${style}>
<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${item.color};"></span>
${item.seriesName}: ${displayValue}
</div>`;
});
return result;
}
},
在这个配置中,formatter 函数遍历了所有传递给它的参数,并对每个值进行了检查。对于数值类型的数据项,它使用 toFixed(2) 方法确保数值被格式化为包含两位小数的字符串。对于 null 或其他非数值类型的值,则保持不变。
这样,无论原始数据是数字还是字符串,只要它是有效的数值,在 tooltip 中都会以两位小数的形式展示,包括当小数部分为 00 时也会显示。
请注意,如果你的 series.data 包含字符串类型的数值(如 '12.00'),ECharts 可能不会自动将它们转换为数字类型。在这种情况下,你可能需要先将这些字符串转换为数字再进行 toFixed(2) 操作。如果确认所有字符串都是有效的数值表示,可以使用 parseFloat() 进行转换:这样做可以确保字符串形式的数值也被正确地格式化为两位小数。
方法2:部分重写
在自定义 formatter 函数时尽量不完全重写提示框的内容,而是基于默认内容进行扩展。
ECharts 默认提供的 tooltip 内容已经包含了图例项的颜色标记(小方块或圆点)和数据值。我们可以通过 params[i].marker 来获取每个数据项的默认颜色标记,并将其包含在我们的自定义内容中。这样就可以确保原有样式和图标得以保留。
formatter: function (params) {
if (!params.length) return ''; // 如果没有数据点,返回空字符串
// 显示 X 轴的文字内容作为第一行
let result = `<strong>${params[0].axisValue}</strong><br/>`;
params.forEach(function (item) {
// 使用默认的颜色标记和系列名称
let marker = item.marker;
let seriesName = item.seriesName;
// 确保值为两位小数的字符串
let displayValue;
if (item.value !== null && typeof item.value === 'number') {
displayValue = parseFloat(item.value).toFixed(2);
} else {
displayValue = item.value; // 如果值是 null 或者其他非数值类型,则保持原样
}
// 保留默认的颜色标记,并添加行高样式以增加行间宽度
result += `<div style="line-height: 1.5;margin-bottom: 4px;">${marker} ${seriesName}: ${displayValue}</div>`;
});
return result;
}
在这个配置中,formatter 函数首先显示了 X 轴的文字内容,然后遍历所有传递给它的参数。对于每个数据项,它使用 item.marker 来获取默认的颜色标记,从而保留了原有的图标样式。接着,它对数值进行了四舍五入处理,并使用内联样式设置了 line-height 以增加行间的空白。
这种方法确保了你既能够自定义 tooltip 的内容,又不会丢失 ECharts 提供的默认样式和图标。通过这种方式,你可以灵活地调整提示框的外观,而不需要从头构建整个内容结构。
更多推荐

所有评论(0)