HighChart Legends Overcome на графиках - PullRequest
0 голосов
/ 10 мая 2019

Если в диаграмме больше значений легенды. затем по ошибке это преодолеть на графике, как показано на рисунке ниже. мы можем справиться с этим с помощью полосы прокрутки, а не с подкачкой?

1 Ответ

0 голосов
/ 10 мая 2019

Полоса прокрутки в легенде Highcharts не поддерживается, но вы можете создать собственную легенду:

var chart = new Highcharts.Chart({

  chart: {
    renderTo: 'container',
    marginRight: 150 // make room for the legend
  },

  xAxis: {
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
  },

  legend: {
    enabled: false
  },

  series: (function() {
    var series = [];
    for (var i = 0; i < 20; i++) {
      var data = [];
      for (var j = 0; j < 12; j++) {
        data.push(Math.random());
      }
      series.push({
        name: 'Location ' + (i + 1),
        data: data
      });
    }
    return series;
  })()
}, function(chart) {
  var options = chart.options.legend;
  /**
   * What happens when the user clicks the legend item
   */
  function clickItem(series, $legendItem, $line) {
    series.setVisible();
    $legendItem.css(
      options[series.visible ? 'itemStyle' : 'itemHiddenStyle']
    );
    $line.css({
      borderTop: '2px solid ' + (series.visible ? series.color :
        options.itemHiddenStyle.color)
    });
  }
  // Create the legend box
  var $legend = $('<div>')
    .css({
      width: 110,
      maxHeight: 210,
      padding: 10,
      position: 'absolute',
      overflow: 'auto',
      right: 10,
      top: 40,
      borderColor: options.borderColor,
      borderWidth: options.borderWidth,
      borderStyle: 'solid',
      borderRadius: options.borderRadius
    })
    .appendTo(chart.container);


  $.each(chart.series, function(i, series) {
    // crete the legend item            
    var $legendItem = $('<div>')
      .css({
        position: 'relative',
        marginLeft: 20
      })
      .css(options[series.visible ? 'itemStyle' : 'itemHiddenStyle'])
      .html(series.name)
      .appendTo($legend);

    // create the line with each series color
    var $line = $('<div>')
      .css({
        width: 16,
        position: 'absolute',
        left: -20,
        top: 8,
        borderTop: '2px solid ' + (series.visible ? series.color :
          options.itemHiddenStyle.color)
      })
      .appendTo($legendItem);

    // click handler 
    $legendItem.click(function() {
      clickItem(series, $legendItem, $line);
    });

  });
});

Живая демоверсия: http://jsfiddle.net/BlackLabel/phvz9uqe/

Резьбовая нить: https://highcharts.uservoice.com/forums/55896-highcharts-javascript-api/suggestions/1256991-scrolling-legends

...