javascript - 如何在 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';
...它不会依附于任何东西。我希望以上信息足以让我摆脱痛苦。非常感谢您!
解决方案
好的,这就是答案:项目符号被添加到每个数据点并且不可能(据我所知)只添加一个。因此,使用 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 一起使用,因此与日期进行比较。
推荐阅读
- html - 来自 HTTPClient 的 ArrayBuffer 内容数据使 PDF 文档损坏,Angular
- kotlin - Kotlin 扩展函数在 java 中编译失败
- sql - 当月份是数字时,有没有办法将日期格式设置为字符?
- google-sheets - Google 电子表格 – 字母等级计算器和变量
- go - A进程通过带外向B进程发送编码(UnixRights)文件描述符,为什么B进程接收与A进程不同的数据
- r - rowSums - 'x' 必须是至少二维的数组
- python - 使用python webscrape html表到csv
- sql-server - 操作错误:现有连接被远程主机强行关闭。(10054)
- javascript - Apache 网络服务器不会编辑文件
- node.js - 我正在创建反应应用程序,在“npm start”上我收到了这个错误