如何单独更改Highcharts xAxis标签颜色?

时间:2017-04-19 06:37:46

标签: highcharts

我可以使用以下内容更改图表xAxis标签的颜色:

Highcharts.chart('container', {
  chart: {
    marginBottom: 80
  },
  xAxis: {
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    labels: {
      style: {
        color: 'red'
      }
    }
  },
  series: [{
    data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
  }]
});

尽管如此,上述内容会将所有xAxis标签更改为红色。

如何单独更改每种标签颜色,以便" Jan"是红色的," 2月"是蓝色等等。

Working example

2 个答案:

答案 0 :(得分:3)

您可以使用Axis.labels.formatter并在html标签中返回带有style属性的标签,该属性可以定义您的颜色。

const color = {
    Jan: 'red',
  Feb: 'green',
  Mar: 'blue'
}

const chart = Highcharts.chart('container', {
  chart: {
    marginBottom: 80
  },
  xAxis: {
    categories: ['Jan', 'Feb', 'Mar'],
    labels: {
      formatter () {
        return `<span style="color: ${color[this.value]}">${this.value}</span>`
      }
    }
  },

  series: [{
    data: [29.9, 71.5, 106.4]
  }]
})


console.log(chart.series[0].data)

实例: http://jsfiddle.net/508jej83/

答案 1 :(得分:0)

我希望你!!!

xAxis : {               
                categories : _category,
                labels : {
                    formatter : function() {
                        if (_category != null && _category.length > 0) {
                            var currentColumn = -1;
                            for (var i = 0; i < _category.length; i++) {
                                if (_category[i] == this.value) {
                                    currentColumn = i;
                                    break;
                                }
                            }

                            if (isNumberEven(currentColumn)) {                              
                                return '<span style="fill: blue;">' + this.value + '</span>';

                            } else {
                                return this.value;
                            }

                        }
                    }

                }

            }