在amcharts的堆积柱形图中,如何在工具提示中显示特定列的所有值?

时间:2018-12-25 14:32:24

标签: javascript amcharts

在amcharts堆积柱形图中, 通过默认方法,当我将鼠标悬停在列中的特定部分上时,只会看到该部分的工具提示。

如果我想在该列上的任何位置显示该列的所有值,那怎么可能? 编辑:

即在此示例中,  amcharts.com/demos/100-stacked-column-chart/?theme=spiritedaway

“一”列有3个部分,当我将鼠标悬停在最上面的部分时,它会显示“系列3:33.33%”。我希望它在工具提示中一起显示“系列1:11.11%系列2:55.56%系列3:33.33%”。有可能吗?

P.S:我不是开发人员,而是UI设计师,我的团队说这是不可能的,但是通过查看代码,我觉得有可能

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但是目前,没有简单的方法可以在x轴级别的单个工具提示中显示所有系列的信息。

我尝试覆盖getTooltipText中的xAxis适配器,并且能够访问原始数据:

...,
xAxes: [{
    type: "CategoryAxis",
    adapter: {
        getTooltipText: function(text, target, key) {
            let dataItem = target.dataItemsByCategory.getKey(text),
                data = dataItem.dataContext;

            // Here you can access the raw data
            // i.e., data.value1, data.value2, etc

            return text;
        }
    }
}],
...

但是随后我不得不每次都重新计算它们的百分比,并且我无法在返回文本上放置HTML(没有getTooltipHTML适配器)。

显示值和图例

我最终显示了系列的值以及它们的图例。并且有记录的方法可以这样做:https://www.amcharts.com/docs/v4/concepts/legend/#Interacting_with_cursor

您只需要在每个系列上定义图例设置,然后打开图例以及光标:

...,
series: [{
    type: "ColumnSeries",
    ...,
    legendSettings: {
        valueText: "---%",
        legendSettings: "[bold]{valueY.totalPercent.formatNumber('#.00')}%"
    },
    ...
}],
...,
legend: {},
cursor: {
    lineX: {
        disabled: true
    },
    lineY: {
        disabled: true
    }
},
...

enter image description here

演示: http://jsfiddle.net/davidliang2008/582snbwo/57/