是否可以将值标签放在条形图上,使它们居中于它们上方?
如果我设置了条形align: "center"
,条形图上的标签就会关闭而不会居中。
<script type="text/javascript">
$(function() {
var data = [<?php echo $data; ?>];
$.plot("#<?php echo $target; ?> .chart-placeholder", data, {
series: {
color: "rgb(57,137,209)",
bars: {
show: true,
// align: "center",
barWidth: .8,
fill: 1
},
valueLabels: {
show: true,
showAsHtml: true,
align: "center"
}
},
grid: {
aboveData: true,
hoverable: true,
borderWidth: 0
},
xaxis: {
mode: "categories",
tickLength: 0,
labelAngle: -45,
showAsHtml: true
},
yaxis: {
show: false,
tickLength: 0
},
});
});
</script>
答案 0 :(得分:14)
插件让你失望?只做自己,生活就这么简单。这是flot
的优势,紧凑的代码可以让你不受欢迎......
以下是我添加这些标签的方法:
// draw initial plot
// notice no categories plugin either, why?
// Because it's easier to do it yourself...
var series = {data: [[0, 5.2], [1, 3], [2, 9.2], [3, 10]],
lines: {show: false},
bars: {show: true, barWidth: 0.75, align:'center'}}
var somePlot = $.plot("#placeholder", [ series ], {
xaxis: {
ticks: [[0,"One"],[1,"Two"],
[2,"Three"],[3,"Four"]]
}
});
// after initial plot draw, then loop the data, add the labels
// I'm drawing these directly on the canvas, NO HTML DIVS!
// code is un-necessarily verbose for demonstration purposes
var ctx = somePlot.getCanvas().getContext("2d"); // get the context
var data = somePlot.getData()[0].data; // get your series data
var xaxis = somePlot.getXAxes()[0]; // xAxis
var yaxis = somePlot.getYAxes()[0]; // yAxis
var offset = somePlot.getPlotOffset(); // plots offset
ctx.font = "16px 'Segoe UI'"; // set a pretty label font
ctx.fillStyle = "black";
for (var i = 0; i < data.length; i++){
var text = data[i][1] + '';
var metrics = ctx.measureText(text);
var xPos = (xaxis.p2c(data[i][0])+offset.left) - metrics.width/2; // place it in the middle of the bar
var yPos = yaxis.p2c(data[i][1]) + offset.top - 5; // place at top of bar, slightly up
ctx.fillText(text, xPos, yPos);
}
小提示演示是here。
产地:
答案 1 :(得分:3)
默认的Value Labels插件似乎没有解决方案。 但是有一些开放式issues可以讨论这个问题,here是您可以尝试的一些建议解决方案。
来自neoDD69的插件的This version可以更好地将标签居中,就像你在这个小提琴中看到的那样(见下面的评论)。