2014年6月25日水曜日

aChartEngineライブラリ 円グラフ



まず、ライブラリを使用する為に、jarファイルをサイトからダウンロードしてきます。
https://code.google.com/p/achartengine/downloads/list

achartengine-1.1.0.jar (最新版をおとしてきてください) (・ω・)

落としてきたjarファイルをlibsディレクトリに追加してください。(。。) これでライブラリが使用できる準備が整いました(・ω・*)
 


LinearLayout layout = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT );
layout.setLayoutParams(param);


//series 情報を用意する
CategorySeries series = this.getCategorySeries();
int cnt = series.getItemCount();//seriesの個数ゲット

//renderer 設定情報を用意する
DefaultRenderer renderer = this.getDefaultRenderer(cnt);


//円グラフのViewを作成する
//第一引数 コンストラクタ
//第二引数 series (内容) CategorySeries型 
//第三引数 renderer (設定) DefaultRenderer型

GraphicalView chartView = ChartFactory.getPieChartView(this,
     series, renderer);


//表示エリアにViewを追加する
layout.addView(chartView);


■ 内容を準備する ここは通信して情報を取得する形になると思いますが、今は静的に用意します(・ω・;)
protected CategorySeries getCategorySeries() {


  CategorySeries series = new CategorySeries("PIE_TEST");

  int length = 5;
  int index;
  for (index = 0; index < length; index++) {

   int value = (int) (Math.random() * (100 / length ));//値は適当に(・ω・)テストだし(・o・;)
   String name = "LABEL_" + (index + 1) + " : " + value;
   series.add(name, value);

  }

  return series ;
 }

 
■ 設定情報を準備する
 private DefaultRenderer getDefaultRenderer(int cnt) {

  DefaultRenderer renderer = new DefaultRenderer();

  renderer.setChartTitle("PIE_TEST");//グラフのタイトル
  renderer.setDisplayValues(true);// 大元のDisplayを表示設定(  )
  renderer.setShowLegend(true);// 凡例を表示する
  renderer.setShowLabels(true);// ラベルの表示をさせるか

  // コントロール関連
  renderer.setZoomEnabled(true);// ズームさせるか
  renderer.setZoomButtonsVisible(true);// ズームボタンの設置をするか
  renderer.setPanEnabled(true);// 移動を許可するか

  // クリック反応させたい時
  renderer.setClickEnabled(true);
  renderer.setSelectableBuffer(10);

  // 見た目
  renderer.setLabelsColor(Color.parseColor(getString(R.color.gray)));// ラベル色
  renderer.setLabelsTextSize(20f);//ラベルサイズ


        //SimpleSeriesRenderer を追加する
        //series の個数分 seriesRenderer を用意しないとエラーでますよ。
                //数合わせてくらさい。 checkParametersではじかれますよ
  int index;
  for (index = 0; index < cnt; index++) {

   SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();


   int red = (int) (Math.random() * 255);
   int green = (int) (Math.random() * 255);
   int blue = (int) (Math.random() * 255);

   seriesRenderer.setColor(Color.rgb(red, green, blue));

   seriesRenderer.setChartValuesTextSize(25f);


   // seriesRenderer.setHighlighted(true);// 円グラフにはサポートされている(クローズアップしたい場合に使用する)

   renderer.addSeriesRenderer(seriesRenderer);// 大元のレンダラーに追加

  }

  return renderer;
 }




*グラフの中に値を表示したい場合は、大元のrendarereのsetDisplayValuesにtrueを入れると表示されます。

SimpleSeriesRendererにsetDisplayValuesがある!!(大元にもあるとそのときはきずいてなっかた…orz)

という事で最初は、SimpleSeriesRendererのsetDisplayValuesに設定していても表示はされず。orz ナゼナゼ…

フラグはきちんと変わっていたようなのですが…(・_・?)

ここで私ははまりました…(・_・;)

setDisplayValuesにtrue入れても表示されないよーってゆう人がでるかもしれないので久々にブログを書いておきました。メモメモφ(。。)



うーん(・_・)
試しに指定のものだけ表示しないとかできるのかとfalseをいれてみましたが、大元がtrueであるとそっちが優先されてしまうようですね(・ω・)
なぜ用意されているのかわからずじまいです(・ω・;;;;;)
詳しいかたがいらっしゃいましたら是非教えていただきたいです(・ω・)ノシ


次は、TimeChartをいじります。

2 件のコメント:

  1. 参考にさせていただいています。
    一つお聞きしたいところがあるのですが

    クリック反応させたい時
    renderer.setClickEnabled(true);
    renderer.setSelectableBuffer(10);

    というのは、スマートフォン側での操作はどのようなものなのでしょうか。

    返信削除

  2. コメントにきずかなくてすみません(・_・`)

    スマートフォン側の操作はどのようなものでしょうか?→…リンクを押すようにタッチするだけですよ(・ω・?)
    聞きたいことと回答が違いましたら、すみません(・ω・;)


    setClickEnabled : クリックの有効状態を設定します。
    getSelectableBuffer : クリック可能なポイントの周りに選択可能な半径値を返します。

    返信削除