Flot:堆叠条形标签重叠/不显示
Flot: Stacked bar labels overlapping / not showing
这是我的 JSFiddle。
问题是堆叠的条重叠/不显示有时堆叠的所有不同标签(参见第一张图表中的第三条)。
不确定,但问题可能是由于以下事实该系列的长度不同,如果没有标签数据,它不包含 0,如 JSFiddle 中的第二个示例?
问:如何让条形标签不重叠?
var newData = [];
var newLabels = [];
var newTicks = [];
for (var i = 0; i < dataFromServer.length; i++) {
var datapoint = dataFromServer[i];
var tick = newTicks.indexOf(datapoint.name);
if (tick == -1) {
tick = newTicks.length;
newTicks.push(datapoint.name);
}
var index = newLabels.indexOf(datapoint.label);
if (index == -1) {
index = newLabels.length;
newLabels.push(datapoint.label);
newDataPoint = {
label: datapoint.label,
data: []
};
newDataPoint.data[tick] = [tick, datapoint.countInbound];
newData.push(newDataPoint);
} else {
newData[index].data[tick] = [tick, datapoint.countInbound];
}
}
for (var i = 0; i < newTicks.length; i++) {
newTicks[i] = [i, newTicks[i]];
}
newLabels = null;
var newOptions = {
xaxis: {
ticks: newTicks
},
grid: {
clickable: true,
hoverable: true
},
series: {
stack: true,
bars: {
show: true,
align: 'center',
barWidth: 0.5
}
}
};
$.plot($("#placeholder2"), newData, newOptions);
要确定堆叠条形图的起始位置,Flot 必须对其下方条形图的高度求和。如果下方有空条(没有高度),则无法计算总和。这导致后面的柱再次从零开始。
为了解决这个问题,插入高度为零的缺失柱:
for (var i = 0; i < newData.length; i++) {
for (var j = 0; j < newTicks.length; j++) {
if (newData[i].data[j] === undefined) {
newData[i].data[j] = [j, 0];
}
}
}
查看此更新 fiddle。
这是我的 JSFiddle。
问题是堆叠的条重叠/不显示有时堆叠的所有不同标签(参见第一张图表中的第三条)。
不确定,但问题可能是由于以下事实该系列的长度不同,如果没有标签数据,它不包含 0,如 JSFiddle 中的第二个示例?
问:如何让条形标签不重叠?
var newData = [];
var newLabels = [];
var newTicks = [];
for (var i = 0; i < dataFromServer.length; i++) {
var datapoint = dataFromServer[i];
var tick = newTicks.indexOf(datapoint.name);
if (tick == -1) {
tick = newTicks.length;
newTicks.push(datapoint.name);
}
var index = newLabels.indexOf(datapoint.label);
if (index == -1) {
index = newLabels.length;
newLabels.push(datapoint.label);
newDataPoint = {
label: datapoint.label,
data: []
};
newDataPoint.data[tick] = [tick, datapoint.countInbound];
newData.push(newDataPoint);
} else {
newData[index].data[tick] = [tick, datapoint.countInbound];
}
}
for (var i = 0; i < newTicks.length; i++) {
newTicks[i] = [i, newTicks[i]];
}
newLabels = null;
var newOptions = {
xaxis: {
ticks: newTicks
},
grid: {
clickable: true,
hoverable: true
},
series: {
stack: true,
bars: {
show: true,
align: 'center',
barWidth: 0.5
}
}
};
$.plot($("#placeholder2"), newData, newOptions);
要确定堆叠条形图的起始位置,Flot 必须对其下方条形图的高度求和。如果下方有空条(没有高度),则无法计算总和。这导致后面的柱再次从零开始。
为了解决这个问题,插入高度为零的缺失柱:
for (var i = 0; i < newData.length; i++) {
for (var j = 0; j < newTicks.length; j++) {
if (newData[i].data[j] === undefined) {
newData[i].data[j] = [j, 0];
}
}
}
查看此更新 fiddle。