是否可以在amCharts v4中指示与v3股票图表中的股票事件类似的系列事件?
发布于 2019-03-01 06:05:00
虽然我是专门为v4而来的,并且不熟悉v3,但我相信您可以使用Bullet
s模拟其中的一些功能。
项目符号是一个Container
(基本上是您想要的任何可视对象或其他Container
的占位符父项),它将出现在每个数据点上。您可以在那里放置标签以及线条和任何其他形状,例如:
var stockBullet = series.bullets.push(new am4charts.Bullet());
stockBullet.dy = -20;
var circle = stockBullet.createChild(am4core.Circle);
circle.stroke = "#000";
circle.strokeWidth = 1;
circle.radius = 10;
circle.fill = series.fill.brighten(-0.3);
circle.dy = -10;
var line = stockBullet.createChild(am4core.Line);
line.stroke = "#000";
line.strokeWidth = 1;
line.height = 20;
var label = stockBullet.createChild(am4core.Label);
label.fill = am4core.color("#000");
label.strokeWidth = 0;
label.dy = -20;
label.textAlign = "middle";
label.horizontalCenter = "middle"
因为我们不希望项目符号出现在每个数据点上,只在股票事件中出现,所以一旦项目符号在图表上准备就绪,我们就可以通过遍历它们的数据来处理这个问题,如果需要的话,禁用它们,否则为我们的标签提供文本(如果需要,也可以提供tooltipText
)(假设数据中有一个属性stockEvent
):
stockBullet.events.on("inited", function(event) {
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;
} else {
event.target.disabled = true;
}
});
根据图表的不同,让不同对象的工具提示很好地相互配合可能会很棘手,例如,如果它启用了Chart Cursor,就会有一个cursorTooltipEnabled
property来防止在项目符号上触发工具提示。为了简单起见,在本例中,我为每个唯一的股票事件bullet创建了一个不可见的系列。对于每个股票事件,使用适配器将其配对系列的tooltipText
设置为所需的值,并将基本的可见系列的tooltipText
设置为""
series.adapter.add("tooltipText", function(text, target) {
if (target.tooltipDataItem.dataContext.stockEvent) {
return "";
}
return text;
});
// ...
hiddenSeries.adapter.add("tooltipText", function(text, target) {
if (target.tooltipDataItem.dataContext.stockEvent) {
return target.tooltipDataItem.dataContext.stockEvent.description;
}
return "";
});
下面是一个演示:
https://codepen.io/team/amcharts/pen/337984f18c6329ce904ef52a0c3eeaaa
截图:
https://stackoverflow.com/questions/54694852
复制相似问题