« InvokeRequired と Invoke の使用例 | トップページ | JSPにてJavaで宣言したenum定数を利用する »

2011年1月19日 (水)

JFreeChartを使用したサンプルプログラム

JFreeChartを使用したサンプルプログラム

① JSPファイルでIMGタグ追加

       <img src="/xxx/SimpleViewer">

※サーブレット「SimpleViewer」を呼び出す為、Web.xmlも変更する

    <servlet>
      <description></description>
      <display-name>SimpleViewer</display-name>
      <servlet-name>SimpleViewer</servlet-name>
      <servlet-class>xxx.SimpleViewer</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>SimpleViewer</servlet-name>
      <url-pattern>/SimpleViewer</url-pattern>
    </servlet-mapping>

② Javaプログラム作成

    /**
     * Get処理
     */
    protected void doGet(
      HttpServletRequest request,
      HttpServletResponse response)
    throws ServletException, IOException {
       View(request,response);
    }

/**
  * 出力共通処理
  * @param request リクエスト
  * @param response レスポンス
  * @throws ServletException
  * @throws IOException
  */
public void View(
   HttpServletRequest request,
   HttpServletResponse response)
throws ServletException, IOException {

  // セッション取得
  HttpSession session = request.getSession();

  // データの取得(事前に配列型データをセッションに設定しておく)
  Object objectList = session.getAttribute("sesXxxxBean") ;

  // データの設定(前もってGetter/Setterを持ったBeanを作成)
  @SuppressWarnings("unchecked")
  ArrayList<XxxxBean> stocklist = (ArrayList<XxxxBean>) objectList ;

  // 3D棒グラフの作成の場合コメントアウトを外す
  ViewCreateBarChart3D(
    request,
    response,
    stocklist);

  // 3D円グラフの作成の場合コメントアウトを外す
//  ViewCreatePieChart3D(
//    request,
//    response,
//    stocklist);

  // レーダチャートの作成の場合コメントアウトを外す
//  ViewCreateSpiderWebPlot(
//    request,
//    response,
//    stocklist);
 
}

/** ------------------------------------------------------------
  * 3次元棒グラフを生成
  * @param request  リクエスト
  * @param response  レスポンス
  * @param stocklist データ
  * @throws IOException
  */
public void ViewCreateBarChart3D(
   HttpServletRequest request,
   HttpServletResponse response,
   ArrayList<XxxxBean> stocklist) throws IOException{

  //レガシーテーマを設定する
  ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

  // 棒グラフの基となるデータセットを用意
     DefaultCategoryDataset objDpd = new DefaultCategoryDataset();

     // データセットに項目名と値を順にセット
     // 引数1 値
     // 引数2 系列
     // 引数3 項目
     for(int i=0;i< userstocklist.size(); i++){
       // get(i) で取得できるGetterを作成しておく
       objDpd.addValue(
         userstocklist.get(i).getStocknumber(),
         userstocklist.get(i).getStockbean().getStockname(),
         userstocklist.get(i).getStockbean().getStockname());
     }

     // 3次元棒グラフを生成
     //  第1引数 グラフタイトル、
     //  第2引数 横軸
     //  第3引数 縦軸
     //  第4引数 データ
     //  第5引数 VERTICAL:縦棒グラフ 、HORIZONTAL:横棒グラフ
     //  第6引数 判例を表示するか
     //  第7引数 ツールチップを表示するか
     //  第8引数 URLを動的に生成するか
     JFreeChart objCht=ChartFactory.createBarChart3D(
       "保有アイテム",
       "アイテム",
       "数量",
       objDpd,
       PlotOrientation.VERTICAL ,
       true,false,false);

     // JPEG形式で画像を出力
     writeChart(request,response,objCht);
}

/** ------------------------------------------------------------
  * 3次元円グラフを生成
  * @param request  リクエスト
  * @param response  レスポンス
  * @param stocklist データ
  * @throws IOException
  */
public void ViewCreatePieChart3D(
   HttpServletRequest request,
   HttpServletResponse response,
   ArrayList<XxxxBean> stocklist) throws IOException{

  //レガシーテーマを設定する
  ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

  // 円グラフの基となるデータセットを用意
  DefaultPieDataset objDpd = new DefaultPieDataset();

     // データセットに項目名と値を順にセット
     // 引数1 項目
     // 引数2 値
     for(int i=0;i< userstocklist.size(); i++){
       objDpd.setValue(
         userstocklist.get(i).getStockbean().getStockname(),
         userstocklist.get(i).getStocknumber() );
     }

     // 3次元円グラフを生成
     //  第1引数 グラフタイトル、
     //  第2引数  データ
     //  第3引数 判例を表示するか
     //  第4引数 ツールチップを表示するか
     //  第5引数 URLを動的に生成するか
     JFreeChart objCht=ChartFactory.createPieChart3D(
       "保有アイテム",
       objDpd,
       true,false,false);

     // JPEG形式で画像を出力
    writeChart(request,response,objCht);
}

/** ------------------------------------------------------------
  * レーダーチャートを生成
  * @param request  リクエスト
  * @param response  レスポンス
  * @param stocklist データ
  * @throws IOException
  */
public void ViewCreateSpiderWebPlot(
   HttpServletRequest request,
   HttpServletResponse response,
   ArrayList<XxxxBean> stocklist) throws IOException{

  // 最大値
  int maxValue = 0 ;
 
  // レガシーテーマを設定する
  ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

  // レーダーチャートの基となるデータセットを用意
     DefaultCategoryDataset objDpd = new DefaultCategoryDataset();

     // データセットに項目名と値を順にセット
     // 引数1 値
     // 引数2 系列
     // 引数3 項目
     for(int i=0;i< userstocklist.size(); i++){
      // 最大値の設定
      if( maxValue < userstocklist.get(i).getStocknumber() ){
       maxValue = userstocklist.get(i).getStocknumber() ;
      }
   objDpd.addValue(
     userstocklist.get(i).getStocknumber(),
     "Aさん",
     userstocklist.get(i).getStockbean().getStockname());
     }

     // 蜘蛛の巣プロットを生成
     SpiderWebPlot sp = new SpiderWebPlot(objDpd);
     // 最大値を設定
     sp.setMaxValue(maxValue);

     // レーダーチャートを生成
     //  第1引数 グラフタイトル、
     //  第2引数 ???
     //  第3引数 データ
     //  第4引数 ???
     JFreeChart objCht = new JFreeChart(
             "保有アイテム",
             JFreeChart.DEFAULT_TITLE_FONT,
             sp,
             true
         );

     // JPEG形式で画像を出力
     writeChart(request,response,objCht);

}

/** ------------------------------------------------------------
  * 画像を出力
  * @param request リクエスト
  * @param response レスポンス
  * @throws IOException
  */
public void writeChart(
   HttpServletRequest request,
   HttpServletResponse response,
   JFreeChart objCht)
throws IOException{

  // バイナリ出力ストリームにJPEG形式で画像を出力(360×240ピクセル)
     response.setContentType("image/jpeg");
     ServletOutputStream objSos=response.getOutputStream();
     ChartUtilities.writeChartAsJPEG(objSos,objCht,360,240);
}

※Get(Post)処理でサーブレットを呼び出し、サーブレット側で描画を行う。

« InvokeRequired と Invoke の使用例 | トップページ | JSPにてJavaで宣言したenum定数を利用する »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/153605/50627697

この記事へのトラックバック一覧です: JFreeChartを使用したサンプルプログラム:

« InvokeRequired と Invoke の使用例 | トップページ | JSPにてJavaで宣言したenum定数を利用する »