首页 > 解决方案 > 如何在 am4charts 中添加单个系列项目符号?

问题描述

这是我的情况:正在动态绘制线条系列,并且在某个点我想添加一个系列项目符号。理想情况下,该子弹应该有一个 ID,以后可以通过该 ID 将其删除。

到目前为止,我所有的尝试都导致项目符号被添加到每个系列数据点(下面的代码):

var bullet = series.bullets.push(new am4charts.CircleBullet());
bullet.width = 10;
bullet.height = 10;
bullet.fillOpacity = 1;
bullet.strokeWidth = 0;

我可以在图表创建后随时触发此操作(也就是说,在其上已经绘制了 10 个数据点之后),但它仍然为每个数据点添加项目符号。我认为其中一种方法是将它们全部添加为 0 不透明度,然后在单个选择项目符号上更新不透明度。但是,我还无法访问单个项目符号,因此任何指针都将不胜感激。第一次更新它时,它将是添加的最后一个数据点,如果这有任何改变的话。

最后,他们的项目符号文档确实提到了 ID 参数,但如果我这样创建它:

bullet.id = 'some unique long id';

...它不会依附于任何东西。我希望以上信息足以让我摆脱痛苦。非常感谢您!

标签: javascriptseriesamcharts4bullet

解决方案


好的,这就是答案:项目符号被添加到每个数据点并且不可能(据我所知)只添加一个。因此,使用 fillOpacity = 0 添加项目符号,然后在向图表添加新值时使用项目符号适配器过滤正确的值并更新它:

bullet.adapter.add("fillOpacity", function(fill, target) {
    if (!target.dataItem) {
        return fillOpacity;
    }
    var values = target.dataItem.values;
    return values.dateX.value < new Date(2018, 3, 3)? 0: 1;
});

这与 DateAxis 一起使用,因此与日期进行比较。


推荐阅读