Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

JavaScriptで折れ線グラフを描いてみた

 どうも!LSSです!!

  ふと「canvasJavaScriptで折れ線グラフ描けるかな」と思い立ち、やってみました。

 

Canvas非対応ブラウザです

 

 

コード

 

<p><canvas id="cv0" width="280" height="200">Canvas非対応ブラウザです</canvas></p>
<script>// <![CDATA[
var gx=10;//原点x
var gy=10;//原点y
var mx=280;//最大x
var my=200;//最大y

var mp=200;//値の最大

var gf1=[133,150,133,100,99,152,117];//グラフ化するデータ
var gf1c='red';//折れ線の色

var ctx0=cv0.getContext("2d");

//表の下地を描画
ctx0.beginPath();
ctx0.fillStyle='#dddddd';
ctx0.fillRect(0,0,mx,my);
ctx0.strokeStyle='black';
ctx0.lineWidth=1;
ctx0.moveTo(gx,0);
ctx0.lineTo(gx,my);
ctx0.moveTo(0,my-gy);
ctx0.lineTo(mx,my-gy);
ctx0.stroke();

//ここから表の描画
ctx0.beginPath();
ctx0.strokeStyle=gf1c;
ctx0.fillStyle='black';//値の文字の色
ctx0.font='10pt sunserif';//値の文字のフォントサイズと種類
ctx0.textAlign='left';//値の文字、左を起点とする
ctx0.textBaseline='bottom';//値の文字、底を起点とする
ctx0.moveTo(gx,my-gy-((my-gy)*gf1[0]/mp));
ctx0.fillText(gf1[0],gx,my-gy-((my-gy)*gf1[0]/mp));
for(i=1;i<gf1.length;i++){
ctx0.lineTo(gx+((mx-gx)*i/(gf1.length)),my-gy-((my-gy)*gf1[i]/mp));
ctx0.fillText(gf1[i],gx+((mx-gx)*i/(gf1.length)),my-gy-((my-gy)*gf1[i]/mp));
}
ctx0.stroke();
// ]]></script>

 

 

コード、一部解説

 

 ちょっと長めのコードですが、まるっとHTML編集画面にコピペして

 

var mp=200;//値の最大

var gf1=[133,150,133,100,99,152,117];//グラフ化するデータ
var gf1c='red';//折れ線の色

 

の部分を変更すれば使えます^^

 ここで200はグラフの天井となる値で、

 [133,150,133,100,99,152,117]

の中身はいくつでもカンマ区切りで数値を並べられます。
(ちなみにこのサンプルの数字は4/1からのこのブログのアクセス数w)

 

 

まさか、はてな記法に悩まされるとは…

 

  とりあえずグラフを描くスクリプトが完成して、記事を書こうとして、コードを貼り付けた時…「コード」として表示する部分に脚注*1が勝手に入ってしまい、見せるほうのコードがぐちゃぐちゃになりました^^;;;

 えー、今までの記事はならなかったと思うけど…((と))なんて今までも結構使ってたハズだけど大丈夫かな…。

 

 対策を調べたところ、半角の[]と[]で挟む事で、その挟んだ間ははてな記法の影響から除外されるとか。

 

 ちょっとこの記事投稿してから確認します。

 

 

 

*1:はてなブログの記事中に、半角の((と))で囲んだ部分があると勝手に脚注にされてしまうようです^^;