我创建了一个高图堆积条形图,但是当数据偏斜时,条形不可见或数字重叠,如下图所示。
我看过很多帖子,但是没有针对此的开箱即用的解决方案,所以我正在制定我的自定义解决方案。
如果y值小于150,我将默认高度设置为150。
此解决方案有效,但是现在显示的条形总数为300,而不是实际的原始值。我如何自行更改总的stacklabel值?我找不到办法。
这是将高度更改为默认值的代码。我将实际值存储在点对象的realValue变量中。
chartOptions = {
type: CHARTING.CHART_OPTIONS.TYPE.COLUMN,
// On chart load, apply custom logic
events : {
load: function () {
var chart = this,
minColHeightVal = 150;
chart.series.forEach(function (s) {
s.points.forEach(function (p) {
if (p.y < minColHeightVal) {
p.update({
y: minColHeightVal,
realValue: p.y
}, false);
}
});
});
// How to iterate over the bars here and sum the actual value? i.e. point.realValue and set the stacklabel?
chart.redraw();
}
}
}
答案 0 :(得分:0)
您尝试使用minPointLength
选项吗?在您的情况下,这可能是一个更简单的解决方案:https://api.highcharts.com/highcharts/series.column.minPointLength
但是,使用您的代码来获得所需的结果,请使用stackLabels.formatter
函数:
formatter: function() {
var series = this.axis.series,
x = this.x,
sum = 0;
series.forEach(function(s) {
if (s.points && s.points[x]) {
sum += s.points[x].realValue ? s.points[x].realValue : s.points[x].y
}
});
return sum;
}
实时演示:https://jsfiddle.net/BlackLabel/uocdykbL/
API参考:https://api.highcharts.com/highcharts/yAxis.stackLabels.formatter