在 Amcharts 的 JSON 文件中包含多个对象的系列

Series with multiple objects in JSON file in Amcharts

我正在尝试在 amcharts 中为我的图表创建 2 个系列。我有以下 JSON:

[
{"equipament":"pir1","watts":48.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir2","watts":16.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir1","watts":3.0,"currentdate":"2020-02-06T21:16:52"},
{"equipament":"pir2","watts":12.0,"currentdate":"2020-02-06T21:16:52"}
]

我需要创建一个图表,其中 X 轴是当前日期字段,Y 轴是瓦特字段,但我需要考虑设备字段。

我在开发中使用 typescript + angular。我设法做了什么:

 let chart = am4core.create("chartdiv", am4charts.XYChart);

  chart.data = [
{"equipament":"pir1","watts":48.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir2","watts":16.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir1","watts":3.0,"currentdate":"2020-02-06T21:16:52"},
{"equipament":"pir2","watts":12.0,"currentdate":"2020-02-06T21:16:52"}
  ];

  chart.dateFormatter.inputDateFormat = "yyyy-MM-dd HH:mm";

  // Create axes
  let dateAxis = chart.xAxes.push(new am4charts.DateAxis());
  dateAxis.tooltipDateFormat = "yyyy-MM-dd HH:mm";

  let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());

  // Create series PIR1
  let series = chart.series.push(new am4charts.LineSeries());
  series.dataFields.valueY = "watts";
  series.dataFields.dateX = "currentdate";
  series.tooltipText = "{equipament}: [bold]{watts}[/]"
  series.name = "pir1";

  // Create series PIR2
  let series2 = chart.series.push(new am4charts.LineSeries());
  series2.dataFields.valueY = "watts";
  series2.dataFields.dateX = "currentdate";
  series2.tooltipText = "{equipament}: [bold]{watts}[/]"
  series2.name = "pir2";

  chart.cursor = new am4charts.XYCursor();
  chart.cursor.xAxis = dateAxis;
  chart.cursor.lineY.disabled = true;
  valueAxis.cursorTooltipEnabled = false;
  chart.scrollbarX = new am4core.Scrollbar();

  chart.legend = new am4charts.Legend();

  this.chart = chart;

但是,在检查图表时,系列是重叠的。我相信我必须向设备字段的 link 添加一些代码。我已经搜索了 amcharts 文档,但没有找到任何相关信息。感谢我能提供帮助。

amCharts 无法按特定 key/value.

筛选出每个系列的数据

最简单的方法是将数据分别分配给每个系列:

series.data = [
  {"equipament":"pir1","watts":48.0,"currentdate":"2020-02-06T21:11:55"},
  {"equipament":"pir1","watts":3.0,"currentdate":"2020-02-06T21:16:52"}
];

series2.data =  [
  {"equipament":"pir2","watts":16.0,"currentdate":"2020-02-06T21:11:55"},
  {"equipament":"pir2","watts":12.0,"currentdate":"2020-02-06T21:16:52"}
];

这样你就根本不需要设置 chart.data