Google Chart APIをグラフィカルな表として使う

Posted: 6月 18th, 2009 | Author: admin | Filed under: API | Tags: | No Comments »

現在、野菜の育て方をメインにしたホームページをdrupalで製作している。すると、野菜を一覧にして、種まきのきせつなどが表示されるテーブルがほしくなる。そこで、すぐに思い浮かぶのはgoogle chartだ。このAPIを利用しているサービスをさがすと、いかにいきあたる

http://drupal.org/project/chart

ただ、googleをよくみると、べつにmoduleをつかわなくても、URLで実現しているだけなので、CCKのテンプレートで簡単にできる。

基本のフォーマットとしては以下

http://chart.apis.google.com/chart?<parameter 1>&<parameter 2>&<parameter n>

http://chart.apis.google.com/chart? : APIアドレス
chs=250x100 : 出力されるイメージサイズ
&chd=t:60,40 : チャートのデータ
&cht=p3 : チャートのタイプ
&chl=Hello|World : チャートのラベル

いろいろオプションはあるが、以下は必ず必要

データフォーマット

データを設定するばあい、以下のいずれかのエンコーディングを指定する

  • Text encoding
    • シンタックス:
      chd=t:<chart data string>
    • 浮動小数点式で0から100
  • Text encoding with data scaling 
    • シンタックス:
      chd=t:<chart data string>
      chds=<data set 1 minimum value>,<data set 1 maximum value>,<data set n minimum value>,<data set n maximum value>
    • 浮動小数点式で任意の範囲
    • 例:chd=t:30,-60,50,120,80,-90&chds=-80,140
      この場合は-80から140の範囲
  • Simple encoding
    • シンタックス:
      chd=s:<chart data string>
    • アルファベットのキャラクターで数字を指定する
    • 短いURLをのぞむ場合に有効
    • 0から61の整数の範囲になる
    • 指定方法
      • A—Z, where A = 0, B = 1, and so on to Z = 25
      • a—z, where a = 26, b = 27, and so on to z = 51
      • 0(zero)—9, where 0 = 52 and 9 = 61
      • The underscore character (_) indicates a missing value
  • Extended encoding
    • 0—4095の整数の範囲になる
    • 2つのアルファベット文字でしていする
      • AA = 0, AB = 1, and so on to AZ = 25
      • Aa = 26, Ab = 27, and so on to Az = 51
      • A0 = 52, A1 = 53, and so on to A9 = 61
      • A- = 62, A. = 63
      • BA = 64, BB = 65, and so on to BZ = 89
      • Ba = 90, Bb = 91, and so on to Bz = 115
      • B0 = 116, B1 = 117, and so on to B9 = 125
      • B- = 126, B. = 127

データーの丸め込み

指定されたデータは、図表されるさいにつぎのステップでまるめこまれる

  1. Encodingのデータレンジのなかに丸め込まれる
  2. axis scale(軸のスケール)に丸め込まれる

axis values

データ軸の指定

例:

http://chart.apis.google.com/chart?chs=640x400&cht=bvs&chd=t:-30,0,10,50,75,120&chxt=y&

  • cht=bvs : チャートのタイプbvs
  • chd=t : チャートのデーターText encoding
  • chxt=y : y軸に対してのデーター軸表示
  • chxr=0,0,200,50 : Y 軸にたいして、データ範囲0—200、ステップ50

 image

*データ自体は0-100で先にまるめこまれていることに注意

オプション

オプションは以下のパラメーターで指定する

chtt : チャートのタイトル

チャーとにタイトルをつける

ex : chtt=Site+visitors

chdl : チャート一つ一つに対する説明

たとえば、ひとつひとつの折れ線に解説をつける場合に私用する

ex : chdl=First|Second|Third

=<data set 1 label>|<data set n label>

chxt : 座標の表示

X,Yの座標を表示する

ex : chxt=x,y,r,t

chm : マーカー

分岐点などにマーカーをカラフルに打てる

などなどかなりあるので、目的にあわせてしらべるのがいいと思われる

 

DRUPALのcomtenplateを使用した例

1)CCKには以下のようにデータがセットされている

$node->field_sow (array)

$node->field_sow[0] (array)
$node->field_sow[1] (array)
$node->field_period[0] (array)
$node->field_period[1] (array)
$node->field_harvest[0] (array)
$node->field_harvest[1] (array)
$node->field_period2[0] (array)
$node->field_period2[1] (array)

2)12ヶ月をあらわすため、chart typeにcht=bhsを使用する

googleの例:

image

cht=bhs
chco=4D89F9,C6D9FD
chd=t:10,50,60,80,40|
50,60,100,40,20

1)をgoogleの2)のデータフォーマットにいれこめばいいことになる。この記述はdrupal上なので、phpでおこなう。ここで、野菜は年度をまたがる場合がある。わかりやすくするため、24月を横軸のレンジとする。するとデータ設定にきをつかわなければいけない。

CCKでのデータ

$node->field_sow[0] (array) : 種まきの開始時期(1月から12月) *1回目
$node->field_sow[1] (array) : 種まきの開始時期(1月から12月) *2回目
$node->field_period[0] (array) : 種まきの期間(月で表現)*1回目
$node->field_period[1] (array) : 種まきの期間(月で表現) *2回目
$node->field_harvest[0] (array) :収穫の開始時期(1月から24月) *1回目
$node->field_harvest[1] (array):収穫の開始時期((1月から24月) *1回目
$node->field_period2[0] (array):種まきの期間(月で表現)*1回目
$node->field_period2[1] (array):種まきの期間(月で表現)*2回目

なので

$node->field_sow[0] .’,’.$node->field_period[0] .’,’.$node->field_harvest[0].’,’.$node->field_period2[0] .’|’.$node->field_sow[1] .’,’.$node->field_period[1] .’,’.$node->field_harvest[1] .’,’.$node->field_period2[1] ………

となればいいことになる

$data=’’;

for($i=0; $node->field_sow[$i]; $i++) {

$data .= $node->field_sow[$i] .’,’.$node->field_period[$i] .’,’.$node->field_harvest[$i].’,’.$node->field_period2[$i]  ;

if($node->field_sow[$i+1] ){
   $data  .= ‘|’ ;
}
else{
  break;
}
}

hmtlサンプル

<img src="http://chart.apis.google.com/chart?chs=600×120&amp;cht=bhs&amp;chds=1,25&amp;chd=t:3.5,9|3,1|3.5,1|2.2,1.2&amp;chdlp=b&amp;chco=FFFFFF,4D89F9,C6D9FD,0040B0&amp;chxt=x&amp;chxl=0:|1月|2月|3月|4月|5月|6月|7月|8月|9月|10月|11月|12月|1月|2月|3月|4月|5月|6月|7月|8月|9月|10月|11月|12月|&amp;chdl=|タネまき|生育|収穫&amp;chbh=15"/>

表示サンプル

image

 

より詳しくはこちら


Spread sheetからtableへ変換

Posted: 3月 3rd, 2008 | Author: focajun | Filed under: tips | Tags: , | No Comments »

spread sheetは現在ほぼ、google docmentでことがたりている。spread sheetをブログにそのままペーストしたいときは、単純に、spread sheetを公開し、embaeddedしてはりつければ、終了する。しかしこのとき、goo
leのクレジットなどレイアウト的に気に食わない部分がでてくる。その場合いくつか方法をかんがえたのだが、結局、csvを画面に出力し、エディターで編集すればそれがレイアウト的には一番早道だった。なぜなら、その他も一丁いったんで、最終的にレイアウトをコントロールするには、調整するのに時間がかかるからだ。もし、csvを出力->tableレイアウト、そしてcssの設定が単純にできれば、それはそれでいいが、見つからなかったので、エディターでcsvを正規置換するのがいいだろう


google spread sheetからフォームを製作

Posted: 3月 3rd, 2008 | Author: focajun | Filed under: html | Tags: , | No Comments »

google spread sheetからアンケートなどのフォームを製作できるようになった。これは非常に便利な機能であるが、以下の点が現在できないようだ。

  1. html埋め込みが簡単にはできない
  2. 入力データの規制(たとえば、必須のフィールドをつくるとか、データのフォーマットをつくるとか)

このことを考慮するとすると、現状ではフォームの特化した専用のサイトの方がいいかもしれないが、