私はいくつかの素晴らしい円グラフを作成するために 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>";
}
問題が何であるかはわかりませんが、50/50 の値の比率を取得したものは 60/40 の値よりも小さく、67/33 の値よりも小さいため、flot がパイをレンダリングする方法だと思います。ただし、プレースホルダーは同じサイズです。なぜ、どのようにこれが起こっているのかについてのアイデア