радиолокационный сюжет highcharts с boxplot - PullRequest
0 голосов
/ 27 сентября 2018

Я использую старшие диаграммы для визуализации радиолокационной карты, и мои входные данные иногда могут содержать более одного значения, поскольку в массиве данных могут быть что-то вроде этих данных = [[0.1,0,4,0.5,0.4],[0.4,0,5], 0.3,0.4].и всякий раз, когда существует более одного значения, мне нужен блок-график вместо данных со сводкой массива значений для этой точки данных.Возможно ли это в старших чартах?

Вот jsfiddle https://jsfiddle.net/n9jts46q/

  Highcharts.chart('container', {

      chart: {
          height:400,
          width:600,
          polar: true,
          showAxes: true,
          type: 'line',
        },

     title: {
          text: 'Radar Chart',
          x: -80
        },

      pane: {
          size: '80%'
      },

      xAxis: {
          reversed: false,
          startOnTick: true,
          endOnTick: true,
          gridLineColor: '#a2aba0',
          categories :['Sales', 'Marketing', 'Development', 'Customer Support',
              'Information Technology', 'Administration', 'new'],
          tickmarkPlacement: 'on',
          labels: {
            useHTML:true,//set to true
            style:{
              width:'150px',
              whiteSpace:'normal'//set to normal
            },
            step: 1,
          },
          lineWidth: 0,
          align: 'center',
          x: 70,
          useHTML: true,
          style: {
            'white-space': 'normal',
            left: '0px',
            top: '0px',
            position: 'absolute'
          },
        },




   yAxis: {
          maxPadding: 0,
          reversed: false,
          startOnTick: true,
          endOnTick: true,
          gridLineColor: '#a2aba0',
          gridLineDashStyle: 'dash',
          gridLineInterpolation: 'circle',
          lineWidth: 1,
          tickPositions: [-1, 0, 1], 
          showLastLabel: false,
          labels:
          {
            enabled: false
          },
          plotBands: [{
            color: '#ffc0cb',
            from: 0,
            to: -1
          },{
            color: '#b8eab8',
            from: 0,
            to: 1
          }],
        },


  plotOptions: {
          series: {
            lineWidth: 1,
            connectEnds: true
          },
        },


      tooltip: {
          shared: false,
          pointFormat: '<span style="color:{series.color}">{series.name}: <b>{point.y}</b><br/>'
        },

      legend: {
          align: 'right',
          verticalAlign: 'top',
          y: 70,
          layout: 'vertical'
      },

      series: [{
          name: 'Serie 1',
          data: [-0.1,-0.56, -0.45, -0.7, -0.4, -0.3,0.7],
          pointPlacement: 'on'
      }, {
          name: 'serie 2',
          data: [0.4, 0.4, 0.6,-0.3, 0.6, 0.23,-0.8],
          pointPlacement: 'on'
      }]

  });

, но, конечно, это данные, которые являются массивом.

1 Ответ

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

По умолчанию это невозможно в Highcharts, вам придется внести некоторые изменения в ядро ​​Highcharts.Но простым способом вы можете предварительно обработать ваши данные в формате, требуемом Highcharts, например:

var H = Highcharts,
  sum,
  data = {
    data1: [
      [-0.1, -0.56, -0.45],
      [-0.7, -0.4], 
      -0.3,
      0.7
    ],
    data2: [
      0.4,
      0.4, 
      [0.6, -0.3],
      0.6,
      0.23, 
      -0.8
    ]
  },
  processedData = {};

H.objectEach(data, function(el, k) {
  processedData[k] = [];
  H.each(el, function(point) {
    if (H.isArray(point)) {
      sum = 0;
      H.each(point, function(p) {
        sum += p;
      });
      processedData[k].push(sum)
    } else {
      processedData[k].push(point)
    }
  });
});

Демонстрационная версия: https://jsfiddle.net/BlackLabel/to3c21gr/

...