Highcharts условно отключает маркер при наведении - PullRequest
0 голосов
/ 11 января 2019

Новичок в старших чартах - у меня есть график, на котором у меня отключены маркеры в сериях

plotOptions: {
    series: {
        marker: {
            enabled: false
        }
    }
},

, что отлично подходит для рисования линий, но когда я наведу курсор на диаграмму, маркеры появляются. это хорошо хорошо, однако я не хочу, чтобы маркер присутствовал, если значение y на xAxis равно 0 (пусто), но я делаю хочу их, когда значение y на xAxis больше единицы.

Я мог сделать это раньше, просто установив значение y на null, отключив наведение для этого ряда, но нули, присутствующие в этом ряду - нарисованные в виде графика с областями с накоплением, приводят к неправильному рисованию сплайна (нет сплайны, неровные края при последовательном использовании опции connectNulls: true.

I want this marker to be missing because there is no data on this day

I want the markers to be here when there is data

Так как мне и / или можно I условно отключить маркер при наведении на основе значения y на оси x?

Я смотрел на обертки прототипов highcharts, которые я уже делаю, чтобы контролировать поведение перекрестия drawCrosshair(): https://www.highcharts.com/docs/extending-highcharts/extending-highcharts, но я не могу найти ничего, что контролирует рисование маркеров на этом уровень

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Динамический подход к этому - перехват setState -функции Point.

Например, обернуть его и запретить обработку, если значение y равно 0:

(function (H) {
  H.wrap(H.Point.prototype, 'setState', function (proceed, state, move) {
    if(this.y === 0) return;
    proceed.apply(this, Array.prototype.slice.call(arguments, 1));
  });
}(Highcharts));

См. эту демонстрацию JSFiddle этого в действии.

0 голосов
/ 11 января 2019

Очень статичный подход к этому - просто обратиться к каждой точке со значением Y 0. Тогда вы можете отключить маркер наведения для каждого из них. Одна такая точка будет выглядеть так ( JSFiddle demo ):

{
  y:0, 
  marker:{
    states:{
      hover:{
        enabled:false
      }
    }
  }
}

И используется в серии:

series: [{
  marker: {
    enabled: false
  },
  data: [3, {y:0, marker:{states:{hover:{enabled:false}}}}, 3, 5, 1, 2, 12]
}]

Как видите, это не красиво, но может помочь тем, кто нуждается в специальном решении.

...