这是我的情况:动态绘制线系列,在某个点上我想添加一个系列项目符号。理想情况下,该子弹应具有一个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';
...它没有附着任何东西。 我希望以上信息足以使我摆脱困境。提前非常感谢您!
答案 0 :(得分:0)
好吧,这就是答案:项目符号被添加到每个数据点,并且(据我所知)不可能仅添加一个。因此,添加带有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一起使用,因此可以与日期进行比较。