Как создать диаграмму с динамической осью Y, зависит от самых высоких значений в JSON - PullRequest
0 голосов
/ 26 сентября 2018

Кто-нибудь может знать, как создать диаграмму с динамической осью Y, которая зависит от самых высоких значений в JSON?Я пытался найти, но не нашел решения даже в документах amCharts.

Fiddle

Json Format

{
        "driver_data": [
            {
                "slot": 0,
                "rideCount": 10
            },
            {
                "slot": 30,
                "rideCount": 20
            },
            {
                "slot": 100,
                "rideCount": 60
            }
        ],
        "passenger_data": [
            {
                "slot": 0,
                "rideCount": 3
            },
            {
                "slot": 30,
                "rideCount": 10
            },
            {
                "slot": 100,
                "rideCount": 80
            },

        ]
    }

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете использовать обратный вызов complete dataLoader , чтобы получить ваш обработанный JSON в dataProvider и обновить свойство valueAxes диаграммы * maximum на основе наибольшего значения в стеке.Например:

    complete: function(chart) {
      //get valueFields
      var valueFields = chart.graphs.map(function(graph) {
        return graph.valueField;
      });
      //find the maximum stack in each category
      var maxValue = chart.dataProvider.reduce(function(maxValue, dataItem) { 
        var sum = valueFields.reduce(function(sum, valueField) {
          return sum + dataItem[valueField];
        }, 0);
        return Math.max(maxValue, sum);
      }, Number.MIN_VALUE);
      //update each value axis' maximum and set strictMinMax to true
      chart.valueAxes.forEach(function(valueAxis) {
        valueAxis.maximum = maxValue;
        valueAxis.strictMinMax = true;
      });
      //update chart
      chart.validateData();
    }
  },

Демо

...