我正在使用JQuery flot来创建一些非常棒的饼图,结果正是我正在寻找的东西,只需要一件事。饼图本身的大小取决于其中的数据量。我将发布以下代码以及工作示例http://jsfiddle.net/2dHVY/1/
的小提琴链接HTML
<div id="canvas"></div>
的Javascript
for (var i = 0; i < 3; i++) {
createPie(i);
}
function createPie(i) {
var a;
var b;
if (i == 0){a=33; b=66}
if (i == 1){a=3; b=2}
if (i == 2){a=1; b=1}
$("#canvas").append("<div id='placeholder"+i+"' class='placeholder'></div>");
var data = [{
label: "a",
data: a,
color: "#299a0b"
}, {
label: "b",
data: b,
color: "#f79621"
},];
var placeholder = $("#placeholder"+i);
placeholder.unbind();
$.plot(placeholder, data, {
series: {
pie: {
show: true,
radius: 1,
label: {
show: true,
radius: 1,
formatter: labelFormatter,
background: {
opacity: 0.8
}
}
}
},
grid: {
hoverable: false,
clickable: true
},
legend: {
show: false
}
});
}
function labelFormatter(label, series) {
return "<div style='font-size:8pt; text-align:center; padding:2px; color:white;'>" + label + "<br/>" + Math.round(series.percent) + "%</div>";
}
我不知道问题是什么,但我想这就是flot渲染馅饼的方式,因为得到50/50值比率的那个小于那个60/40的那个和那个小于那个有67个的那个/ 33。虽然占位符大小相同。任何想法为什么以及如何发生
答案 0 :(得分:4)
看起来它与饼图上标签的呈现位置有关。您可以尝试更改标签的位置,使它们位于饼图内。
请查看此网站:http://www.flotcharts.org/flot/examples/series-pie/,其中显示了两种不同标签样式之间的区别。
您需要更改JavaScript中的label
属性,如下所示:
label: {
show: true,
radius: 1,
formatter: labelFormatter,
background: {
opacity: 0.8
}
为:
label: {
show: true,
radius: 3/4, //This sets where the labels position themselves on the pie chart
formatter: labelFormatter,
background: {
opacity: 0.8
}
我已经创建了一个fiddle供您查看。
Flot网站上显示的“标签样式#1”和“标签样式#2”之间存在差异: