Highcharts (JavaScript): изменить цвет столбца, если условие выполнено - PullRequest
0 голосов
/ 11 октября 2018

Я хочу создать динамическую диаграмму, которая показывает все столбцы в одном цвете, кроме человека, который смотрит на него (в данном случае: человек, который представлен Африкой, Америкой и т. Д. Вы знаете, каксделать это (простым способом)?

Заранее спасибо!

Код Highcharts от https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/bar-basic/

Highcharts.chart('container', {
    chart: {
        type: 'bar'
    },
    title: {
        text: 'Historic World Population by Region'
    },
    subtitle: {
        text: 'Source: <a href="https://en.wikipedia.org/wiki/World_population">Wikipedia.org</a>'
    },
    xAxis: {
        categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
        title: {
            text: null
        }
    },
    yAxis: {
        min: 0,
        title: {
            text: 'Population (millions)',
            align: 'high'
        },
        labels: {
            overflow: 'justify'
        }
    },
    tooltip: {
        valueSuffix: ' millions'
    },
    plotOptions: {
        bar: {
            dataLabels: {
                enabled: true
            }
        }
    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'top',
        x: -40,
        y: 80,
        floating: true,
        borderWidth: 1,
        backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
        shadow: true
    },
    credits: {
        enabled: false
    },
    series: [{
        name: 'Year 1800',
        data: [107, 31, 635, 203, 2]
    }]
});

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете просто установить color для точки в данных:

Highcharts.chart('container', {
    series: [{
        type: 'bar',
        data: [43934, {
            y: 52503,
            color: 'red'
        }, 57177, 69658, 97031, 119931, 137133, 154175]
    }]
});

Если вы хотите изменить цвет в зависимости от некоторых условий, вы можете использовать метод update для точки, например, вload событие:

chart: {
    events: {
        load: function() {
            Highcharts.each(this.series[0].points, function(p) {
                if (p.y > 8) {
                    p.update({
                        color: 'red'
                    });
                }
            });
        }
    }
}

Демонстрация в реальном времени: http://jsfiddle.net/BlackLabel/4ucx3skh/

API: https://api.highcharts.com/class-reference/Highcharts.Point#update

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