我正在尝试创建一个水平堆叠的条形图,在条形图本身(当前使用dataLabels)以及条形图上方的标签上创建标签。这是我创建的一个JSFiddle,有点类似于我要完成的工作。在此示例中,我使用plotLine
标签放置了标签,但是当我通过Ajax调用获取条形码的数据时,很难弄清楚如何在实际用例中正确放置条形码。
我已经尝试过stackLabels
,plotLine
标签和plotBand
标签,但是都没有用。如何每次都将标签正确正确地放置在条形上方?
我将使用plotBands而不是plotLines-您可以更好地控制带内的对齐方式,可以将其设置为与条形图一样覆盖图形的同一部分。
一个例子。
使用系列数据:
var series = [{
name: 'John',
data: [5]
},
{
name: 'Jane',
data: [2]
}, {
name: 'Joe',
data: [3]
}]
我们可以遍历并根据相同的数据构建一个plotBands数组:
var bands = [],
prevData = 0;
$.each(series, function(i,ser) {
var point = ser.data[0],
name = ser.name;
bands.push({
from: prevData,
to: (prevData + point),
color: 'rgba(255,255,255,0)',
label: {
text: name,
align: 'center'
}
});
prevData = (prevData+point);
});
为了使该序列与绘制的序列顺序相匹配,我们需要在上设置reversedStacks: fals
e yAxis
,因为默认情况下,Highcharts反转该序列的顺序。然后,plotBands
使用生成的数组填充:
yAxis: {
reversedStacks: false,
plotBands: bands
}
这样,您可以利用plotBands
标签属性的全部功能集。
更新的小提琴:
并且只要您保持相同的格式(series.name,series.data [0]),它就会进行调整以适合您拥有的许多数据点:
您还可以通过多种其他方式进行此操作,包括:
该labels
属性:http : //api.highcharts.com/highcharts/labels
该renderer
功能:http://api.highcharts.com/highcharts/Renderer
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句