仕事上Androidでレーダーチャートを使う場面になったので作ってみようかと思います。

Androidではグラフやチャートを表示するUI(コントロール)はデフォルトでは用意されておりません。

そのため独自に実装する必要がありますが、1から作ろうとすると結構手間です。

レーダーチャートはラジアン値から、sin(X座標またはY座標)、cos(X座標またはY座標)で座標を取得してチャートを起点となる位置から表示するなどのメソッドを用意する必要があります。特に難しくはありません。下記コードはライブラリを使わずに独自にカスタムビューで作成したものです。このコードはラジアン値より、90度210度330度と3点のチャートにしています。点が増えるたびにそれぞれ作成する必要がありそうで手間です。後半の起点の微調整は即席なのでご了承。

protected void onDraw(Canvas canvas) {
 Paint paint = new Paint();
 paint.setAntiAlias(true);
 paint.setColor(Color.RED);
 double rd1 = Math.toRadians(90);
 double rd2 = Math.toRadians(210);
 double rd3 = Math.toRadians(330);

 float maxVal = 100;
 float df1X =(float)Math.cos(rd1) * maxVal;
 float df1Y =(float)Math.sin(rd1) * maxVal;

 float df2X =(float)Math.cos(rd2) * maxVal;
 float df2Y =(float)Math.sin(rd2) * maxVal;

 float df3X =(float)Math.cos(rd3) * maxVal;
 float df3Y =(float)Math.sin(rd3) * maxVal;

 Path path = new Path();
 path.moveTo((105+df1X),(-80+df1Y));
 path.lineTo((105+df2X),(220+df2Y));
 path.lineTo((105+df3X),(220+df3Y));
 canvas.drawPath(path, paint);
}

位置の調整が特にメンドクサイのでライブラリを使うことにします。

今回試すのはjavaでも有名なjfreechartという棒グラフ,折れ線グラフ,円グラフ,ガントチャートなどを簡単に作成できるライブラリのAndroid版ということで、afreechartというライブラリを使います。

すでにいいサンプルがあるかとググルとレーダーチャートを実践しているサンプルがみつからないので、ライブラリを駆使して作成することにします。

今回はここまで。

その他おすすめの備忘録

Tagged with:
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>