Ajaxで今よみがえる(^^;;-->[クロスブラウザ技術 ]DHTMLサンプル集
古籏一浩さんとのはじめての共著 発売中-->『Ajax実践テクニック』 古籏一浩/高橋 登史朗 (著)秀和システム
配本予約開始-->『入門Ajax 増補改訂版 』 高橋 登史朗 (著)ソフトバンククリエイティブ ; ISBN: 4797336242
-- リスト --
【カテゴリー】 ActionScript ( 6 ) AIR ( 2 ) AjaSQL ( 10 ) Ajax ( 575 ) Arax ( 1 ) canvas ( 10 ) CSS ( 11 ) ( 5 ) DLNA ( 1 ) Dojo ( 17 ) DOM ( 45 ) ES4 ( 4 ) Ext JS ( 2 ) 反重力物質 ( 1 ) ffAdd-on ( 1 ) Flash ( 46 ) Flash Remoting ( 11 ) FTP ( 2 ) GAF ( 9 ) Google Maps ( 119 ) GPS ( 42 ) HTTPヘッダサンプル ( 9 ) Internet ( 1 ) iPhone ( 31 ) IPv6 ( 1 ) 漫画 ( 1 ) Java ( 45 ) JavaScript ( 265 ) jKamo ( 8 ) jQchart ( 2 ) jQuery ( 111 ) jquery-ref ( 1 ) jsGadget ( 19 ) jslb_ ( 3 ) jslb_ajax ( 9 ) JSON ( 47 ) JSR223 ( 7 ) kjscmd ( 1 ) KNOPPIX ( 1 ) Linux ( 16 ) Mac ( 8 ) Memo ( 3 ) Microformats ( 2 ) Mini AJAX ( 2 ) MochiKit ( 2 ) mootools ( 3 ) Movable Type ( 57 ) MySQL ( 10 ) NewGameWeb ( 2 ) Nucleus ( 8 ) OpenAJAX ( 3 ) OpenDocument ( 1 ) OS ( 7 ) P2P ( 2 ) Perl ( 7 ) PHP ( 37 ) PostGIS ( 1 ) PostgreSQL ( 4 ) prototype.js ( 22 ) ROBOT ( 1 ) RSSリーダー ( 14 ) Ruby on Rails ( 7 ) Spry ( 6 ) SQLite ( 16 ) SQLiteWorker ( 2 ) ssh ( 1 ) SSI ( 2 ) SVG ( 15 ) TRON ( 1 ) Video ( 1 ) VML ( 1 ) Web Slice ( 1 ) Webサービス ( 98 ) widget ( 6 ) Wii ( 1 ) Wiki ( 1 ) Win ( 6 ) WSH ( 1 ) X01HT ( 29 ) XML ( 30 ) XOOPS ( 1 ) XQuery ( 2 ) XUL ( 4 ) Yahoo! UI ( 64 ) 日付入力用カレンダー ( 1 ) 『Ajax実践テクニック』 ( 1 ) 『入門 Ajax』 ( 42 ) WinTips ( 2 ) こりゃすごい ( 3 ) チューニング ( 22 ) ダイナミックロード関数 ( 7 ) リファレンス ( 18 ) ライブラリ ( 114 ) レーダー雨量表示 ( 1 ) ハード ( 23 ) ペンギン ( 2 ) ブラウザ ( 73 ) ブログでBBS ( 1 ) アクセスグラフ ( 3 ) イベント ( 2 ) カレンダーによる日付入力スクリプト ( 4 ) クロスブラウザ ( 11 ) クロスブラウザ関数 ( 7 ) スマートフォン ( 8 ) セキュリティ ( 114 ) ソフトイーサ ( 1 ) マッシュアップ ( 23 ) 暗号 ( 4 ) 映画 ( 47 ) 河川の水位グラフ ( 3 ) 回線 ( 2 ) 開発ツール ( 26 ) 牛久大仏 ( 9 ) 携帯 ( 138 ) 言語 ( 18 ) 故障 ( 3 ) 洪水警報システム ( 2 ) 今日のひと言 ( 5 ) 仕様 ( 60 ) 雑談 ( 232 ) 実装 ( 1 ) 書籍 ( 17 ) 親子ウインドウ有無の確認関数 ( 3 ) 新海誠 ( 3 )
【info】有料サポート(ベータ)限定 承り中 多忙につき、一時、新規受付停止 閉店中 /【JSサポート(仮称)】 

【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いです。実験用ですので、カオス(混沌)をあえて意図したりもしますので、標準やValidとは無縁だったりしますが、何卒、ご了承ください ( _ _ b

2007年12月07日

【Webサービス】Google Chart API

Webサービス ブックマークに追加する ブックマーク-- Buzzurl  / Hatena  / Livedoor track feed


Google Chart API http://code.google.com/apis/chart/

これは便利。jquery.jQchart作らなくても良いじゃん(笑;;;;。 たとえば、次のようにGETリクエストを投げると、下記のグラフ画像が返されるという仕組みです。
<img src="http://chart.apis.google.com/chart?
chs=200x125
&chd=s:helloWorld
&cht=lc
&chxt=x,y
&chxl=0:|Mar|Apr|May|June|July|1:||50+Kb" 
alt="Sample chart" />
Sample chart

<img src="http://chart.apis.google.com/chart
?cht=lc
&chd=s:pqokeYONOMEBAKPOQVTXZdecaZcglprqxuux393ztpoonkeggjp
&chco=FF0000
&chls=4.0,3.0,0.0&chs=200x125
&chxt=x,y
&chxl=0:|Jun|July|Aug|1:||20|30|40|50
&chf=bg,s,efefef">
<img src="http://chart.apis.google.com/chart
?cht=lc
&chco=ff0000,0000ff
&chs=200x125
&chd=s:FOETHECat,lkjtf3asv,KATYPSNXJ
&chxt=x,y
&chxl=0:|Oct|Nov|Dec|1:||20K||60K||100K">
<img src="http://chart.apis.google.com/chart
?cht=p3
&chd=s:Uf9a
&chs=200x100
&chl=A|B|C|D">
<img src="http://chart.apis.google.com/chart
?cht=s
&chd=s:984sttvuvkQIBLKNCAIi,DEJPgq0uov17zwopQODS,AFLPTXaflptx159gsDrn
&chxt=x,y
&chxl=0:|0|2|3|4|5|6|7|8|9|10|1:|0|25|50|75|100
&chs=200x125">


まぁ、やってることは、これ↓とそんなに変わらない気もするのですが、WebAPIとして提供しつつ圧倒的にパフォーマンスが良いというのはGoogleならではです。(いや、こっちは、データも出力してるし<って張り合ってどうする^^;)

このアクセスカウンターで受信しているJSデータでGoogle Chartを描いてみました。日本語は通りませんね、やはり。


ソース
<!-- jQuery 1.2.1 -->
<script src="../../../jquery-min.js" type="text/javascript"></script>
<script charset="EUC-JP" 
     src="http://jsgt.org/mt/01/counter_1/cntx41.php?uid=1091192023"></script>

<img id="test18321">

<script >
<!--

(function (){

 var week  = ["S","M","T","W","T","F","S"],
     cnt   = new jg_tato_GraphCounter01(),
     len   = 21 ,//cnt.d.length,
     _wa   = [],
     wa    = [],
     wk    = [],
     unit  = 1000,
     gridY = parseInt(
       (function (){
            for(var i=0;i<len;i++)wa.push(cnt.d[i][1]/25);
            for(var k=0;k<len;k++)wk.push(week[cnt.d[k][3]]);
            for(var l=0;l<len;l++)_wa[l]=wa[l];
            return wa.sort(function (a,b){return b - a})[5]
       })()/unit,10)+2,
     url   = "http://chart.apis.google.com/chart",
     getYscaleStr = function (){
        for(var j=0,str='';j<=gridY;j++)str+=(j*unit)+"|" ;
        return str ;
     },
     param = url+"\
?cht=lxy\
&chs=200x100\
&chd=t:"+_wa.join(',')+"\
&cht=lc\
&chxt=x,y\
&chxl=0:|"+wk.join('|')+"|1:|"+getYscaleStr()

$("#test18321").attr("src",param);

})()

//-->
</script>
#速度を見たら、jsgt.orgで作った方が3倍速かった。ほっ。

で、もっと簡単なサンプル。
<!-- jQuery 1.2.1 -->
<script src="./jquery-1.2.1.min.js"></script>

<img id="test18322"><!-- ここへ出力-->

<script >
<!--

(function (){

var width  = 200,  //幅
     height = 100,  //高さ

     yData  = [10,20,50,100],        //折れ線データ
     yGrid  = [0,50,100],            //y軸ラベル
     xGrid  = [2005,2006,2007,2008], //x軸ラベル

     url   = "http://chart.apis.google.com/chart",

     param = url+"\
?cht=lxy\
&chs="+width+"x"+height+"\
&chd=t:"+yData.join(',')+"\
&cht=lc\
&chxt=x,y\
&chxl=0:|"+xGrid.join('|')+"|1:|"+yGrid.join('|')

$("#test18322").attr("src",param); //jQueryでゴー!

})()

//-->
</script>

次に、書き換えテスト
このページの読み込みがかったるいときは、f^^ こちら

<!-- jQuery 1.2.1 -->
<script src="./jquery-1.2.1.min.js"></script>

<img id="test18323"><!-- ここへ出力-->
<p>
<button id="test18323a">[1,10,30,25]</button>
<button id="test18323b">[10,50,37,11]</button>
<button id="test18323c">[5,20,68,77]</button>
</p>
<script >
<!--


$(function (){
  //ボタンにクリックイベントセット
  $("#test18323a").click(function(){myChart.draw([1,10,30,25])})
  $("#test18323b").click(function(){myChart.draw([10,50,37,11])})
  $("#test18323c").click(function(){myChart.draw([5,20,68,77])})
});


//Googleチャート描画テスト用インスタンス
var myChart = new (function (){

  this.draw=function (data){
    mkChart18323(data||[10,20,50,100]);
  }

  function mkChart18323(data){

    var width  = 200,  //幅
          height = 100,  //高さ

        yData  = data,        //折れ線データ
        yLabel = [0,50,100],            //y軸ラベル
        xLabel = [2005,2006,2007,2008], //x軸ラベル

        url   = "http://chart.apis.google.com/chart",

        param= url+"\
?cht=lxy\
&chs="+width+"x"+height+"\
&chd=t:"+yData.join(',')+"\
&cht=lc\
&chxt=x,y\
&chxl=0:|"+xLabel.join('|')+"|1:|"+yLabel.join('|')


    $("#test18323").attr("src",param); //jQueryでゴー!

  }
})();

  //初期描画
  myChart.draw([10,20,80,100]);

//-->
</script>