面临的问题是具有负堆栈的条形图中的plotLines基于系列的数据消失。
例如,如果给出的数据是[{“data”:[23.0]},{“data”:[ - 0.0]}],则图表如下所示:
PlotLines在[-47,28]
当数据为[{“data”:[10.0]},{“data”:[ - 12.0]}时,相同的相关问题:
PlotLines在[-33,14]
最后,如果数据是[{“data”:[22.7]},{“data”:[ - 24.3]}],问题可能如下图所示:
PlotLines在[-36,8]
不同图表的示例代码:
$.getJSON('targets.json', function(jsonplotdata) {
$.getJSON('chart.json', function(datajsp) {
var chart = new Highcharts.chart({
chart: {
renderTo: 'chart',
plotBackgroundColor: null,
plotBorderWidth: 0,
plotShadow: false,
type: 'bar',
},
credits: {
enabled: false
},
lang: {
noData: "No Data Available!"
},
title: {
text: ''
},
xAxis: {
labels: {
enabled: false
},
lineWidth: 0,
minorTickLength: 0,
tickLength: 0,
gridLineWidth: 0,
minorGridLineWidth: 0,
categories: ['']
},
yAxis: {
labels: {
enabled: false,
},
plotLines: [{
color: 'black',
dashStyle: 'Solid',
zIndex: 5,
width: 1,
label: {
text: 'Target<br/>47 kg/t',
style: {
fontSize: "10px",
fontFamily: 'sans-serif'
},
rotation: 0,
align: 'center',
x: 25,
}
}, {
color: 'black',
dashStyle: 'Solid',
zIndex: 5,
width: 1,
label: {
text: 'Target<br/>28 kg/t',
style: {
fontSize: "10px",
fontFamily: 'sans-serif'
},
rotation: 0,
align: 'center',
x: -25,
}
}],
gridLineWidth: 0,
minorGridLineWidth: 0,
title: {
text: ''
}
},
colors: ['#4572A7', '#AA4643'],
legend: {
enabled: false,
},
tooltip: {
enabled: false,
},
plotOptions: {
series: {
stacking: 'normal',
pointWidth: 60
}
},
series: [{
name: 'chart',
data: [],
dataLabels: {
enabled: true,
x: 16,
format: '{series.name}<br/>{point.y} kg/t',
style: {
align: 'center',
fontSize: "10px",
fontWeight: 'normal',
textOutline: false,
fontFamily: 'sans-serif',
'text-anchor': 'middle'
}
}
}, {
name: 'Lime + Dolo',
data: [],
dataLabels: {
enabled: true,
x: 25,
formatter: function() {
return this.series.name + '<br/>' + Math.abs(this.y) + ' kg/t';
},
style: {
color: 'white',
align: 'center',
fontSize: "10px",
fontWeight: 'normal',
textOutline: false,
fontFamily: 'sans-serif',
'text-anchor': 'middle'
}
}
}],
});
datajsp.forEach(function(datajsp, i) {
chart.series[i].setData(datajsp.data);
chart.yAxis[0].options.plotLines[0].value = jsonplotdata[0];
chart.yAxis[0].options.plotLines[1].value = jsonplotdata[1];
chart.yAxis[0].update();
});
});
预期的观点如下:
我正在寻找克服这个问题的最佳方法。
@WojciechChmiel的最后一个建议完美无缺!但是,似乎最简单的方法是在此链接中添加散点系列:https://www.highcharts.com/forum/viewtopic.php?t=34848
以下系列补充:
{
name:"Target 47",
type:'scatter',
marker:{
enabled:false
},
data:[-75]
},{
name:"Target 28",
type:'scatter',
marker:{
enabled:false
},
data:[28]
}
通过将其设置为-75(28 + 47的总和)来实现负堆栈栏的目标的正确位置-47。