Mingで円グラフを作成するサンプルです.といっても,ほとんど ActionScriptですが・・・.円の描画においては描画 メソッドで円を描くを参考にさせていただきました.
#!/usr/bin/perl -w # # make Pie Chart and Donut Chart # use strict; use SWF qw(:ALL); SWF::setScale(20.0); SWF::setVersion(6); my $m = new SWF::Movie(); $m->setBackground(0xff,0xff,0xff); $m->setDimension(300, 200); $m->setRate(30); #--------------------------------------------------------------------------- # start actionscript #--------------------------------------------------------------------------- my $strAction = <<'EOS'; _root.depth = 1; _root.myMain = function() { var aData = new Array(219, 123, 70, 32, 55); var aColor = new Array(0x00de2b, 0xdc143c, 0x6a5acd, 0xff4500, 0x8b008b); drawPieChart("pie", aData, aColor, 70, 100, 60, 0); var aData2 = new Array(40, 15, 45); var aColor2 = new Array(0x0000ff, 0x666666, 0xff00000); drawPieChart("donut", aData2, aColor2, 225, 100, 60, 0.5); }; function drawPieChart(objName, aData, aColor, nX, nY, nR, nDonut) { var nTotal = 0; for ( var i=0; i=0; --i) { xDrawSectorClockwise(target_mc, i*nAngle, nAngle, nX, nY, nDonut*nR, 0); } } else { target_mc.lineTo(0, 0); } }; function xDrawSectorClockwise(target_mc, nTheta, nAngle, nX, nY, nR, isClockWise) { var cw = isClockWise ? 1 : -1; var nAnchorX = nR*Math.cos(nTheta); var nAnchorY = nR*Math.sin(nTheta); var nControlX = nAnchorX+nR*Math.tan(cw*nAngle/2)*Math.cos(nTheta-Math.PI/2); var nControlY = nAnchorY+nR*Math.tan(cw*nAngle/2)*Math.sin(nTheta-Math.PI/2); target_mc.curveTo(nControlX+nX, nControlY+nY, nAnchorX+nX, nAnchorY+nY); }; // main _root.myMain(); EOS $m->add(new SWF::Action($strAction)); $m->nextFrame(); $m->save("piechart.swf",9);
Up(P): Home
間違え,勘違い,スペルミスなどは
まで
Last modified: Sat Feb 4 23:27:18 JST 2006