如何单独更改Highcharts图表的x轴标签颜色?

4

通过使用以下内容,我已经能够更改图表x轴标签的颜色:

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”为红色,“Feb”为蓝色等等。

工作示例


如果我的解决方案解决了您的问题,请不要忘记接受它 ;) - stpoa
3个回答

11
你可以使用 Axis.labels.formatter 并返回带有 style 属性的 html 标签来定义标签颜色。
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
我尝试使用background-color,但是没有起作用。 - nam vo

0
另一种方法是使用Highcharts useHTML设置。这适用于Highcharts导出服务器。直接在类别标签中将颜色编码为html:
Highcharts.chart('container', {
  chart: {
  marginBottom: 80
},
xAxis: {
   categories: ['<span style="color:green">Jan</span>', '<span style="color:blue">Feb</span>', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
   labels: {
      useHTML: true
      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]
}]
});

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;
                            }

                        }
                    }

                }

            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接