我如何理解Amcharts中XY图表中光标的索引和更新数据,其中可以拖动项目符号?

问题描述 投票:0回答:1

我在 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,
      });
    });
javascript charts amcharts amcharts5
1个回答
0
投票

这个问题你解决了吗?我的版本5也有同样的问题...

© www.soinside.com 2019 - 2024. All rights reserved.