如何在amCharts v4中创建股票事件?

如何在amCharts v4中创建股票事件?,amcharts,Amcharts,是否可以在amCharts v4中指示与v3股票图表中股票事件类似的系列事件 虽然我是专门为v4而来的,但我不熟悉v3,我相信您可以使用来模拟其中的一些功能 项目符号是一个(基本上是您想要的任何可视对象或附加容器的占位符父对象),它将出现在数据的每个点上。您可以在此处放置标签、线条和任何其他形状,例如: var stockBullet=series.bullets.push(新的am4charts.Bullet()); stockBullet.dy=-20; var circle=stockBu

是否可以在amCharts v4中指示与v3股票图表中股票事件类似的系列事件


虽然我是专门为v4而来的,但我不熟悉v3,我相信您可以使用来模拟其中的一些功能

项目符号是一个(基本上是您想要的任何可视对象或附加
容器的占位符父对象),它将出现在数据的每个点上。您可以在此处放置标签、线条和任何其他形状,例如:

var stockBullet=series.bullets.push(新的am4charts.Bullet());
stockBullet.dy=-20;
var circle=stockBullet.createChild(am4core.circle);
circle.stroke=“#000”;
圆。冲程宽度=1;
圆半径=10;
circle.fill=series.fill.lighting(-0.3);
圆dy=-10;
var line=stockBullet.createChild(am4core.line);
line.stroke=“#000”;
line.strokeWidth=1;
直线高度=20;
var label=stockBullet.createChild(am4core.label);
label.fill=am4core.color(“#000”);
label.strokeWidth=0;
label.dy=-20;
label.textAlign=“middle”;
label.horizontalCenter=“中间”
因为我们不希望项目符号出现在数据的每个点上,只在股票事件中出现,所以我们可以在项目符号在图表上准备好后,通过检查它们的数据,在需要时禁用它们,否则为我们的标签提供文本(如果需要,还可以提供
tooltipText
)(假设数据中存在属性
stockEvent
):

stockBullet.events.on(“初始化”,函数(事件){
if(event.target.dataItem&&event.target.dataItem.dataContext&&event.target.dataItem.dataContext.stockEvent){
event.target.children.getIndex(2).text=event.target.dataItem.dataContext.stockEvent.text;
}否则{
event.target.disabled=true;
}
});
根据图表的不同,获取不同对象的工具提示以更好地相互配合可能会很棘手,例如,如果启用了,则会有一个防止触发项目符号上的工具提示。为简化此情况,我所做的是为每个唯一的股票事件项目符号创建一个不可见的系列。对于每个股票事件,使用适配器设置其成对的序列号将“
tooltipText
设置为所需内容,并将基本的可见系列“
tooltipText
设置为

series.adapter.add(“ToolTiptText”,函数(文本,目标){
if(target.tooltipDataItem.dataContext.stockEvent){
返回“”;
}
返回文本;
});
// ...
添加(“tooltipText”,函数(文本,目标){
if(target.tooltipDataItem.dataContext.stockEvent){
返回target.tooltipDataItem.dataContext.stockEvent.description;
}
返回“”;
});
下面是一个演示:

截图:


Great alternative!StockEvents过去有一个
showOnAxis
选项,该选项导致引脚以指定值显示在x轴上,而不是数据点旁边。您知道如何使用v4中的项目符号实现这一点吗?我最终发现: