Highcharts renderer.rect на ярлыке xAxis не отвечает - PullRequest
0 голосов
/ 23 мая 2018

Я установил цвет фона метки xAxis в диаграмме типа столбца с помощью метода chart.renderer.rect (), но он не реагирует на изменение размера экрана.Моя цель - расширить участок печати до метки xAxis на одном столбце, нарисовав прямоугольник вокруг xAxis.Обратите внимание, что основной момент распространяется на март, а не пребывание в январе.Как сделать его отзывчивым. FiddleLink

Highcharts.chart('container', {
    chart: {
        type: 'column',
          events: {
                    // Highlights the specialty labels at the bottom of the chart. Also see plotBands settings below
                    load: function() {
                        let chart = this;
                        let xAxis = chart.xAxis[0];
                        let yAxis = chart.yAxis[0];
                        let top = chart.plotTop + yAxis.height;
                        let height = 60; // Stretches the highlight to the bottom
                        let options = {
                                fill: 'rgb(235, 236, 238, 0.5)'
                            };
                        // colorize from -1 to .5
                        let start_1 = xAxis.toPixels(-0.5);
                        let end_5 = xAxis.toPixels(.5);

                        let rect1 = chart.renderer.rect(
                            start_1,
                            top,
                            end_5 - start_1,
                            height
                        ).attr(options).add();
                    }
                },
    },

    title: {
        text: 'Threshold is set to 100'
    },

    xAxis: {
        categories: ['Jan', 'Mar']
    },

    plotOptions: {
        series: {
            threshold: 2
        }
    },

    series: [{
        data: [10, -5],
        zones: [{
                    value: 0,
                    color: '#233b66'
                }]
    }]
});
#container {
	max-width: 800px;
	margin: 0 auto;
}
<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container"></div>

1 Ответ

0 голосов
/ 23 мая 2018

Вам необходимо установить размеры прямоугольника на событии изменения размера / перерисовки диаграммы.

function rectDimensions(chart) {
  const xAxis = chart.xAxis[0]
  const yAxis = chart.yAxis[0]

  const top = yAxis.top + yAxis.height
  const height = 60

  const x1 = xAxis.toPixels(-0.5)
  const x2 = xAxis.toPixels(0.5)

  return {
    x: x1,
    y: top,
    width: x2 - x1,
    height
  }
}


Highcharts.chart('container', {
  chart: {
    type: 'column',
    events: {
      // Highlights the specialty labels at the bottom of the chart. Also see plotBands settings below
      load: function() {
        const chart = this
        const dimensions = rectDimensions(chart)

        let options = {
          fill: 'rgb(235, 236, 238, 0.5)'
        };

        this.rect1 = chart.renderer
          .rect()
          .attr(Object.assign(dimensions, options))
          .add();

      },

      redraw() {
        this.rect1.attr(rectDimensions(this))
      }
    }
  },

пример в реальном времени: http://jsfiddle.net/3xg17bby/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...