Highcharts - Пузырьковая диаграмма - Пропорциональные пузыри

Я создаю пузырьковые диаграммы Highcharts на основе данных, выбранных пользователем.

Я ожидал, что пузырьки на диаграммах будут пропорционально размеру друг друга (т.е. пузырь для «2» согласован на многополосных диаграммах), однако, похоже, это основано на диапазоне точек на диаграмме.

Это выделено в этой скрипке

Как видите, цифры «2» на диаграмме №2 имеют тот же размер, что и цифра «6» на диаграмме №1. Я бы хотел, чтобы цифра «2» на диаграмме №2 соответствовала размеру «2» в диаграмме №1.

Есть ли способ добиться этого?

Вот код:

jQuery(function () {

var data1 = [{ x: 0, y: 0, z: 0, label: 'data #1' },
            { x: 1, y: 1, z: 1, label: 'data #2' },
            { x: 2, y: 2, z: 2, label: 'data #3' },
            { x: 3, y: 3, z: 3, label: 'data #4' },
            { x: 4, y: 4, z: 4, label: 'data #5' },
            { x: 5, y: 5, z: 5, label: 'data #6' },
            { x: 6, y: 6, z: 6, label: 'data #7' }]; 

var data2 = [{ x: 0, y: 0, z: 0, label: 'data #1' },
            { x: 1, y: 1, z: 1, label: 'data #2' },
            { x: 2, y: 1, z: 1, label: 'data #3' },
            { x: 3, y: 2, z: 2, label: 'data #4' },
            { x: 4, y: 2, z: 2, label: 'data #5' },
            { x: 5, y: 1, z: 1, label: 'data #6' },
            { x: 6, y: 0, z: 0, label: 'data #7' }]; 

jQuery('#container').highcharts({

    chart: {
        type: 'bubble',
        plotBorderWidth: 1,
        zoomType: 'xy'
    },
        credits: false,

    legend: {
        enabled: false
    },

    title: {
        text: ''
    },

    xAxis: {
        gridLineWidth: 1,
        title: {
            text: ''
        },
       categories: ['data #1', 'data #2', 'data #3', 'data #4', 'data #5', 'data #6', 'data#7']
    },

    yAxis: {
        startOnTick: true,
        min: -1,
        max: 7,
        showFirstLabel: false,
        showLastLabel: false,
        tickInterval: 1,
        title: {
            text: 'Score'
        },
        labels: {
            format: '{value}'
        },
        maxPadding: 0.2
    },

    tooltip: {
        useHTML: true,
        headerFormat: '<table>',
        pointFormat: '<tr><th colspan="2"><h3>{point.label}</h3></th></tr>' +
            '<tr><th>Score:</th><td>{point.y}</td></tr>',
        footerFormat: '</table>',
        followPointer: true
    },

    plotOptions: {
        series: {
            dataLabels: {
                enabled: true,
                format: '{point.name}'
            }
        }
    },
    series: [{ data: data1 }]
});


jQuery('#container2').highcharts({

    chart: {
        type: 'bubble',
        plotBorderWidth: 1,
        zoomType: 'xy'
    },
        credits: false,

    legend: {
        enabled: false
    },

    title: {
        text: ''
    },

    xAxis: {
        gridLineWidth: 1,
        title: {
            text: ''
        },
       categories: ['data #1', 'data #2', 'data #3', 'data #4', 'data #5', 'data #6', 'data#7']
    },

    yAxis: {
        startOnTick: true,
        min: -1,
        max: 7,
        showFirstLabel: false,
        showLastLabel: false,
        tickInterval: 1,
        title: {
            text: 'Score'
        },
        labels: {
            format: '{value}'
        },
        maxPadding: 0.2
    },

    tooltip: {
        useHTML: true,
        headerFormat: '<table>',
        pointFormat: '<tr><th colspan="2"><h3>{point.label}</h3></th></tr>' +
            '<tr><th>Score:</th><td>{point.y}</td></tr>',
        footerFormat: '</table>',
        followPointer: true
    },

    plotOptions: {
        series: {
            dataLabels: {
                enabled: true,
                format: '{point.name}'
            }
        }
    },
    series: [{ data: data2 }]
});


});

person Pat Dobson    schedule 23.05.2016    source источник


Ответы (1)


Это похоже на то, что я предложил в качестве ответа на другой вопрос пузырьковой диаграммы в другом месте на Stack Overflow:

Пузырьковая диаграмма Highcharts 3.0 - Контроль размеров пузырьков

В вашей ситуации кажется, что добавление прозрачного, неинтерактивного «фиктивного» пузыря с максимально возможными размерами на вашей диаграмме сохранит все остальные пузыри в правильных пропорциях по отношению друг к другу:

series: [{ data: data2 }, 
    // dummy series to keep all the bubbles in proportion
    {name: 'dummy series',
    data: [{x:6,y:6,z:6}], 
    showInLegend: false, 
    color: 'transparent', 
    enableMouseTracking: false}
]

Вот обновленная версия вашей скрипки с этим исправлением: http://jsfiddle.net/brightmatrix/svcuLgso/13/

Пожалуйста, дайте мне знать, если это решит вашу проблему!

person Mike Zavarello    schedule 23.05.2016
comment
Добро пожаловать! Однажды я случайно натолкнулся на это решение, поэтому я рад, что оно сработало для вас. Пожалуйста, дайте мне знать, если я могу оказать дополнительную помощь. - person Mike Zavarello; 23.05.2016