amCharts - создание нескольких серий из JSON - PullRequest
0 голосов
/ 17 апреля 2020

Можно ли создать несколько серий из json, описанного ниже? Если нет, то какой будет наиболее эффективный способ сделать это?

[
  {
    "Label": "Series 1",
    "Std_Dev": 12.3003,
    "Return": 3.1513
  },
  {
    "Label": "Series 2",
    "Std_Dev": 10.0244,
    "Return": 3.1808
  },
  {
    "Label": "Series 3",
    "Std_Dev": 7.7506,
    "Return": 3.1057
  },
  {
    "Label": "Series 4",
    "Std_Dev": 5.5022,
    "Return": 2.9264
  }
]

Мой пример кода приведен ниже, я пытаюсь составить точечную диаграмму, где каждая серия будет помечена на легенде. Данные диаграммы: json.

    am4core.ready(function () {

        am4core.useTheme(am4themes_animated);

        // Create chart instance
        var chart = am4core.create("chart-container", am4charts.XYChart);
        // Create axes
        var valueAxisX = chart.xAxes.push(new am4charts.ValueAxis());
        valueAxisX.title.text = 'Standard Deviation';

        // Create value axis
        var valueAxisY = chart.yAxes.push(new am4charts.ValueAxis());
        valueAxisY.title.text = 'Return';


        chart.data = myJSON;

        // Function to create series
        function createSeries(r, sd, name, fill) {
            var lineSeries = chart.series.push(new am4charts.LineSeries());
            lineSeries.dataFields.valueY = Return;
            lineSeries.dataFields.valueX = Std_Dev;
            lineSeries.strokeOpacity = 0;
            lineSeries.name = name;
            lineSeries.stroke = fill;
            lineSeries.fill = am4core.color(fill).lighten(0.0);
            var bullet = lineSeries.bullets.push(new am4charts.CircleBullet());
        }

        // Create Series
        createSeries(what, to, put, here);
    });
}

1 Ответ

0 голосов
/ 17 апреля 2020

Мне удалось достичь этого:

chart.data = data;

        function createSeries(data) {
            var lineSeries = chart.series.push(new am4charts.LineSeries());
            lineSeries.data = data;
            lineSeries.dataFields.valueY = "Return";
            lineSeries.dataFields.valueX = "Std_Dev";
            lineSeries.valueY = 1;
            lineSeries.valueX = 2;
            lineSeries.strokeOpacity = 0;
            lineSeries.name = lineSeries.data[0]['Label'];
            var bullet = lineSeries.bullets.push(new am4charts.CircleBullet());

        };

        // Create Series by looping through object
        chart.data.forEach(function (obj) {
            createSeries([obj]);
        });
...