我在 Amcharts 中使用带有系列的 XY 图表。在此图中,我使用预定义的数组并设置其数据,如下所示:
series.data.setAll(example);
我编写了一些代码,使该数据的每个索引显示为项目符号并使这些项目符号可拖动。最后,如下所示,每个项目符号都可以拖动。
我想在更改时更新原始数据数组,如何实现?我受到 version 3 中的演示的启发,但我找不到任何方法来获取项目符号的索引,单击该索引可以稍后使用“series.data.setIndex()”方法更新它。
似乎没有自动 validateData() 或类似的东西,因此该数组会定期更新。你能帮我解决这个问题吗?提前致谢
我尝试编写自定义函数来处理拖动,但无法在原始数据中添加更新。
const handleDrag = (e: any) => {
let point = chart.plotContainer.toLocal(e.point);
let date = xAxis.positionToValue(xAxis.coordinateToPosition(point.x));
let value = round(
yAxis.positionToValue(yAxis.coordinateToPosition(point.y)),
1
);
let dataItem = e.target.dataItem;
dataItem.set("valueX", date);
dataItem.set("valueXWorking", date);
dataItem.set("valueY", value);
dataItem.set("valueYWorking", value);
// update data
//otherSeries.data.setIndex(index, value);
};
拖动时,原始项目符号顶部的不可见项目符号会调用此函数:
// Invisible bullet which will be dragged (to avoid some conflicting between
// drag position and bullet position which results flicker)
series.bullets.push(() => {
let bulletCircle = am5.Circle.new(root, {
radius: 6,
fillOpacity: 0,
fill: otherSeries.get("fill"),
draggable: true,
cursorOverStyle: "pointer",
});
bulletCircle.events.on("dragged", function (e) {
handleDrag(e);
});
return am5.Bullet.new(root, {
sprite: bulletCircle,
});
});
这个问题你解决了吗?我的版本5也有同样的问题...