|
<script language="JavaScript" type="text/javascript">
<!--//copyright(C) 2005 あう http://www5c.biglobe.ne.jp/~horoau/
//ver1.1
function c_graph()
{
this.color = new Array();
var list = new Array();
var data = new Array();
var count = new Array();
var zindex = new Array();
this.point = new Array();
this.percent = new Array();
this.vml_data = '';
this.vml_list = '';
this.shadow = "#d0d0d0";
this.s_left = 20;
this.s_top = 20;
this.color[0] = "#f6537f";
this.color[1] = "#b6e881";
this.color[2] = "#7b78ef";
this.color[3] = "#f9b652";
this.color[4] = "#8c56cd";
this.color[5] = "#58c6dc";
this.color[6] = "#f157b1";
this.color[7] = "#e8e81c";
this.sorting = "on";
this.ritu = "on";
if(!arguments[0])
{return false;}
for(i=0;i<arguments[0].length;i++)
{data[data.length] = arguments[0][i];}
var total = 0;
for(i=0;i<data.length;i++)
{data[i] = (data[i]+"").replace(/\D*/,"")-0;
count[i] = i;
total += data[i];}
for(i=0;i<data.length;i++)
{this.percent[i] = Math.floor(data[i]/total*1000)/10+"%";}
if(this.sorting != "off")
{count.sort(function (a,b){return data[b]-data[a];});
data.sort(function (a,b){return b-a;});}
list[0] = 0;
for(i=0;i<data.length;i++)
{list[i-0+1] = (data[i]/total)*360;
zindex[i] = (data[i]/total)*360*(-1);
if(i != 0)
{list[i-0+1] += list[i];}}
var r = 500;
for(i=0;i<list.length;i++)
{if(list[i] < 0 || isNaN(list[i]))
{break;}
var a = list[i];
var x = r * Math.cos(a / 180 * Math.PI);
var y = r * Math.sin(a / 180 * Math.PI);
if((a >= 0 && a < 90) || a >= 360)
{x = x+500;
y = 500-y;}
else if(a >= 90 && a < 180)
{x = x+500;
y = 500+(y*(-1));}
else if(a >= 180 && a < 270)
{x = 500+x;
y = 500+(y*(-1));}
else if(a >= 270 && a < 360)
{x = 500+x;
y = 500+(y*(-1));}
x = Math.round(x);
y = Math.round(y);
this.point[i] = x+","+y;}
this.drow = function (width,height)
{
if(!document.all || navigator.userAgent.indexOf("Opera") != -1)
{return 'InternetExplorer5.0以上ならグラフが表示されます。<br>';}
this.vml_data = "";
if(this.shadow != "off")
{this.vml_data += '<v:arc style="width:1000px;height:1000px;position:relative;top:'+this.s_top+'px;left:'+this.s_left+'px;z-index:-500;"';
this.vml_data += ' startangle="0" endangle="360" strokecolor="'+this.shadow+'" fillcolor="'+this.shadow+'" strokeweight="1" />';}
for(i=0;i<this.point.length;i++)
{if(this.point[i-0+1] == undefined)
{break;}
this.vml_data += '<v:group style="width:100%;height:100%;rotation:90;flip:y;z-index:'+zindex[i]*(-1)+';">\n';
this.vml_data += '<v:shape style="width:1000px;height:1000px;"';
this.vml_data += ' path="m 500,500 l '+this.point[i]+' ar 0,0,1000,1000,'+this.point[i]+','+this.point[i-0+1]+' l 500,500 x e';
this.vml_data += '" strokecolor="'+this.color[i]+'" fillcolor="'+this.color[i]+'" strokeweight="1" />\n';
this.vml_data += '</v:group>';}
return '<v:group style="width:'+width+';height:'+height+';">'+this.vml_data+'</v:group>';}
this.add = function (width,height,font,list)
{
if(!document.all || navigator.userAgent.indexOf("Opera") != -1)
{return "";}
this.vml_list = '<table border="0" cellspacing="1" cellpadding="0" style="display:inline;">';
for(i=0;i<count.length;i++)
{if(!list[count[i]])
{list[count[i]] = "";}
else
{this.percent[count[i]] = "("+this.percent[count[i]]+")";}
this.vml_list += '<tr>\n<td>';
this.vml_list += '<v:rect style="width:'+width+'; height:'+height+';margin-right:3px;" strokecolor="'+this.color[i]+'"';
this.vml_list += ' fillcolor="'+this.color[i]+'" strokeweight="1" /></td>\n';
this.vml_list += '<td style="font-size:'+font+';">'+list[count[i]]+'</td>\n';
if(this.ritu != "off")
{this.vml_list += '<td style="font-size:'+font+';">'+this.percent[count[i]]+'</td>\n';}
this.vml_list += '</tr>';}
this.vml_list += '</table>';
return this.vml_list;}}
// -->
</script>
|
[ 2005.7.10 ] ver.1.1 |
|
今回はちょっとしたマイナーチェンジだけど、
今までは三角形と弧の組み合わせでグラフを描いてたのを
1つのパスに統合してみました。
これにより立体的なグラフにすることも可能なんだけど
そうなると今度は重なりの問題が出てくるんだよね。
さすがに無料配布でそこまでやってられないんで
対応希望の人はカスタマイズの依頼してね。
実際現状でも十分使えると思うし。
|
|
|
[ 2005.3.15 ] ver.1.0 |
|
ウェブで使えるベクター画像っていったらVMLにSVG・・・。
標準仕様という意味ではSVG使うべきなんだろうけど
肝心なプラグインの普及率ってどうなんだろうね。
それにVMLはIE5.0以上のみの対応とは言っても
それでシェアの90%はカバーできるわけだしね。
っと聞こえのいい言い訳をしてみたりするが
SVGだとプラグインだからVMLみたいに扱えないんだよね。
もしかしたらいい方法あるのかもしれないけど
まだまだ勉強不足のようで(笑)
そんなわけでSVG版は後日公開予定ってことでね。
|
|
ウェブ木箱
copyright(C) 2005 あう