Highcharts - форматирование перекрывающихся точек разброса в общей подсказке - PullRequest
0 голосов
/ 01 июля 2019

У меня есть точечная диаграмма, в которой есть несколько точек в разных сериях, которые перекрываются в точных точках. X, y для обеих этих точек в разных сериях одинаковы.

Так что мне нужно показать их обоих одновременно во всплывающей подсказке. Однако опция shared работает только тогда, когда я не форматирую подсказку.

Не работает, когда я использую pointFormat. Я пытался использовать formatter, но this просто дает текущий point. Если я переключу график на линейный график, this даст points, у которого есть все точки в текущей позиции. После этого я могу выполнить итерацию и выполнить форматирование.

Параметры диаграммы:

{
    chart: {
        type: 'scatter',
        zoomType: 'xy'
    },

    title: {
        text: 'Height Versus Weight of 507 Individuals by Gender'
    },
    subtitle: {
        text: 'Source: Heinz  2003'
    },
    xAxis: {
        title: {
            enabled: true,
            text: 'Height (cm)'
        },
        startOnTick: true,
        endOnTick: true,
        showLastLabel: true
    },
    yAxis: {
        title: {
            text: 'Weight (kg)'
        }
    },
    legend: {
        layout: 'vertical',
        align: 'left',
        verticalAlign: 'top',
        x: 100,
        y: 70,
        floating: true,
        backgroundColor: Highcharts.defaultOptions.chart.backgroundColor,
        borderWidth: 1
    },          tooltip: {
              formatter: function () {
              console.log(this);
                  return this.points.reduce(function (s, point) {
                      return s + '<br/>' + point.series.name + ': ' +
                          point.point.options.dynamicText;
                  }, '<b>' + this.x + '</b>');
              },
              crosshairs:true,
              shared: true
          },
    plotOptions: {
        scatter: {
            marker: {
                radius: 5,
                states: {
                    hover: {
                        enabled: true,
                        lineColor: 'rgb(100,100,100)'
                    }
                }
            },
            states: {
                hover: {
                    marker: {
                        enabled: false
                    }
                }
            }
        }
    },
    series: [{
        name: 'Female',
        color: 'rgba(223, 83, 83, .5)',
        data: [{x:161.2, y:51.6, dynamicText:"foo1"}]

    }, {
        name: 'Male',
        color: 'rgba(119, 152, 191, .5)',
        data: [{x:161.2, y:51.6, dynamicText:"foo2"}]
    }]
}

https://jsfiddle.net/dushyantbangal/ojqde34x/17/

1 Ответ

0 голосов
/ 01 июля 2019

Общая подсказка не работает с сериями scatter - проверьте эту проблему: https://github.com/highcharts/highcharts/issues/1431

Самое простое решение - использовать тип серии line с свойством lineWidth, установленным на 0:

plotOptions: {
    series: {
        lineWidth: 0,
        states: {
            hover: {
                lineWidthPlus: 0
            }
        }
    }
},

Демонстрационная версия: http://jsfiddle.net/BlackLabel/3fda1nm4/

Справочник по API: https://api.highcharts.com/highcharts/series.line.lineWidth

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