Индикатор Highcharts не показывает цвет, как ожидалось - PullRequest
0 голосов
/ 24 октября 2018

У меня 3 остановки по 0,4, 0,6 и 0,8 (красный, зеленый, синий).Максимальное значение равно 100 (для процентов)

Если я установлю данные равными 50, я ожидаю, что они будут зелеными, но, похоже, они представляют собой смесь зеленого и красного.Только когда я доберусь до 60, я ожидаю ярко-зеленого цвета.

В любом случае, чтобы убрать градиент?

https://jsfiddle.net/sy3r2hj7/1/

var gaugeOptions = {

    chart: {
        type: 'solidgauge'
    },

    title: null,

    pane: {
        center: ['50%', '85%'],
        size: '140%',
        startAngle: -90,
        endAngle: 90,
        background: {
            backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#EEE',
            innerRadius: '60%',
            outerRadius: '100%',
            shape: 'arc'
        }
    },

    tooltip: {
        enabled: false
    },

    // the value axis
    yAxis: {
        stops: [
            [0.40, '#ff0000'], 
            [0.60, '#00ff00'], // yellow
            [0.80, '#0000ff'] // red
        ],
        lineWidth: 0,
        minorTickInterval: null,
        tickAmount: 2,
        title: {
            y: -70
        },
        labels: {
            y: 16
        }
    },

    plotOptions: {
        solidgauge: {
            dataLabels: {
                y: 5,
                borderWidth: 0,
                useHTML: true
            }
        }
    }
};

// The speed gauge
var chartSpeed = Highcharts.chart('container-speed', Highcharts.merge(gaugeOptions, {
    yAxis: {
        min: 0,
        max: 100,
        title: {
            text: 'Speed'
        }
    },

    credits: {
        enabled: false
    },

    series: [{
        name: 'Speed',
        data: [60],
        dataLabels: {
            format: '<div style="text-align:center"><span style="font-size:25px;color:' +
                ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}</span><br/>' +
                   '<span style="font-size:12px;color:silver">km/h</span></div>'
        },
        tooltip: {
            valueSuffix: ' km/h'
        }
    }]

}));

1 Ответ

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

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

    events: {
        render: function() {
            var point = this.series[0].points[0];
            if (point.y < 40) {
                point.graphic.attr({
                    fill: '#ff0000'
                })
            } else if (point.y < 60) {
                point.graphic.attr({
                    fill: '#00ff00'
                })
            } else {
                point.graphic.attr({
                    fill: '#0000ff'
                })
            }
        }
    }

Демонстрационная версия: https://jsfiddle.net/BlackLabel/fw594Lmg/

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