highcharts Highchart中数据标签的颜色是否可以在条形图的内部和外部不同

ha5z0ras  于 2022-11-10  发布在  Highcharts
关注(0)|答案(3)|浏览(182)

我想知道如果文本不适合条形图的长度,条形图(plotOptions.bar.dataLabels.color)中的文本颜色可能会不同。例如:

代码如下:

$(function () {
$('#container').highcharts({
    chart: {
        type: 'bar',
        height: 700
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    plotOptions: {
        bar: {
            stacking: 'normal',
            pointPadding: 0,
            groupPadding: 0.2,
            dataLabels: {
                enabled: true,
                color: 'black',
                align: "right",
                format: '{y} M',
                inside: false,
                style: {
                    fontWeight: 'bold'
                },
                verticalAlign: "middle"
            },
        }
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 2.33]
    }]
});

});
先谢谢你

acruukt9

acruukt91#

可能的解决方案是使用格式化程序。确定值是否低于某个级别,然后更改dataLabel颜色。例如:http://jsfiddle.net/Yrygy/176/

formatter: function() {
                    var max = this.series.yAxis.max,
                        color =  this.y / max < 0.05 ? 'black' : 'white'; // 5% width
                    return '<span style="color: ' + color + '">' + this.y + ' M</span>';   
                },

也可以将点的宽度与y值字符串的长度进行比较。

kmb7vmvb

kmb7vmvb2#

我这样使用“isInside”值:

series: [{
   name: 'Percentage',
   data: this.calculateChartSeries(),
   dataLabels: {
     enabled: true,
     rotation: 0,
     align: 'right',
     borderWidth: 1,
     formatter: function() {
       if (this.point.isInside == true) {
         return '<span style="color: white">' + this.y + '%</span>';
       } else {
         return '<span style="color: black">' + this.y + '%</span>';
       }
     }
   }
 }]

但是如果这对你不起作用,可以使用“this.point.shapeArgs.height”,并检查该高度是否大于文本的长度。

bq8i3lrv

bq8i3lrv3#

您可以将颜色设置为contrast,它将根据dataLabel是在栏内还是栏外而变化。

style: {
    color: 'contrast'
}

相关问题