我想知道如果文本不适合条形长度,条形图内的文本颜色(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]
}]
});
});
提前致谢
答案 0 :(得分:5)
可能的解决方案是使用格式化程序。确定值是否低于某个级别,然后更改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值字符串的长度进行比较。
答案 1 :(得分:2)
我使用&#34; isInside&#34;像这样的价值:
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>';
}
}
}
}]
&#13;
&#13;
但如果这对你不起作用,可以使用&#34; this.point.shapeArgs.height&#34;并检查该高度是否大于文本的长度。
答案 2 :(得分:2)
您可以将颜色设置为contrast
,并且颜色会根据dataLabel是位于条形图的内部还是外部而变化。
style: {
color: 'contrast'
}