Trying to hide all the tooltips of an XY area chart when the value is 0.
Have found a solution for amcharts4, but this is not possible for amcharts5.
The labelText
key of the tooltip is a string and no function.
Solution for amcharts4: https://www.amcharts.com/docs/v4/tutorials/do-not-show-tooltip-for-zero-value-columns/
function createSeries(field: string) {
const series = chart.series.push(
LineSeries.new(root, {
name,
xAxis,
yAxis,
valueXField: 'timestamp',
valueYField: field,
categoryXField: 'timestamp',
legendValueText: '{valueY}',
tooltip: Tooltip.new(root, {
pointerOrientation: 'horizontal',
labelText: // --> this needs to be a string
'[bold]{name}[/]\n{timestamp.formatDate()}: {field} {valueY}',
}),
})
);
}
for (const key of data.keys) {
createSeries(key);
}
DEMO
You can also do this with amCharts 5 using an adapter.
The following code should be inside your createSeries()
function, right after the series
constant declaration and initialization:
series.get("tooltip").adapters.add("visible", (visible, target) => {
return target.dataItem?.dataContext[field] > 0;
});
Adapters are custom functions that can be used to dynamically alter value of an element's setting.
Adapters – amCharts 5 Documentation
So here we put an adapter on the series tooltip to alter its visibility. If target.dataItem
exists, then we can test the value stored in dataContext
for the given key. If this value is strictly positive, the Boolean expression is evaluated as true
, which means that the tooltip will be visible. Otherwise, the Boolean expression is evaluated as false
and the tooltip will be hidden.