page5.jspでグラフクラスを呼び出す
//==========================================================================================
//¥(円マーク)を¥¥(円円)に置き換える
BarChart2 chart = new BarChart2(application.getRealPath("").replace("\\", "\\\\"));
chart.setAppPath(application.getRealPath("").replace("\\", "\\\\"));
chart.setGraphData(gb1.graphData);
chart.DrawGraph();
//==========================================================================================
//==========================================================================================
//グラフ作成クラス本体
//==========================================================================================
package chart;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.channels.FileChannel;
import javax.imageio.ImageIO;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
//import org.jfree.chart.title.*;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 棒グラフのサンプル
*/
public class BarChart2 {
String x;
String appPath;
//データ作成
public String[][] graphData;
public static void main(String[] args) {
//new BarChart2();
}
public BarChart2(String aPath){
appPath = aPath;
}
public void DrawGraph(){
// 表示するデータの作成
String series1 = "第一";
String series2 = "第二";
String series3 = "第三";
// カテゴリーの設定
String category1 = "カテゴリー 1";
String category2 = "カテゴリー 2";
String category3 = "カテゴリー 3";
//レガシーテーマを設定する
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i=0;i<31;i++){
if((!graphData[0][i].equals("")) && (!graphData[1][i].equals(""))){
dataset.addValue(Integer.parseInt(graphData[0][i]), graphData[1][i], category1);
}
}
// JFreeChartオブジェクトの生成(タイトル、項目名など)
JFreeChart chart = ChartFactory.createBarChart("日付別売上状況",
null, ".", dataset, PlotOrientation.VERTICAL, true, true, false);
try {
x = ServletUtilities.saveChartAsJPEG(chart, 500, 500,null);
String sFile = System.getProperty("java.io.tmpdir") + "\\" + x;
String dFile = this.appPath + "\\" + x;
copyTransfer(sFile,dFile);
} catch (Exception e) {
//e.printStackTrace();
}
}
public void setGraphData(String[][] values){
graphData = new String[100][100];
graphData = values;
}
public String getName(){
return x;
}
public void setAppPath(String value_path){
this.appPath = value_path;
}
/**
* コピー元のパス[srcPath]から、コピー先のパス[destPath]へ
* ファイルのコピーを行います。
* コピー処理にはFileChannel#transferToメソッドを利用します。
* 尚、コピー処理終了後、入力・出力のチャネルをクローズします。
* @param srcPath コピー元のパス
* @param destPath コピー先のパス
* @throws IOException 何らかの入出力処理例外が発生した場合
*/
public static void copyTransfer(String srcPath, String destPath)
throws IOException {
FileChannel srcChannel = new
FileInputStream(srcPath).getChannel();
FileChannel destChannel = new
FileOutputStream(destPath).getChannel();
try {
srcChannel.transferTo(0, srcChannel.size(), destChannel);
} finally {
srcChannel.close();
destChannel.close();
}
}
public BarChart2(){
// 表示するデータの作成
String series1 = "第一";
String series2 = "第二";
String series3 = "第三";
// カテゴリーの設定
String category1 = "カテゴリー 1";
String category2 = "カテゴリー 2";
String category3 = "カテゴリー 3";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(5.0, series1, category3);
dataset.addValue(5.0, series2, category1);
dataset.addValue(7.0, series2, category2);
dataset.addValue(7.0, series2, category3);
dataset.addValue(6.0, series3, category1);
dataset.addValue(8.0, series3, category2);
dataset.addValue(8.0, series3, category3);
// JFreeChartオブジェクトの生成(タイトル、項目名など)
JFreeChart chart = ChartFactory.createBarChart("棒グラフのサンプル",
null, "値", dataset, PlotOrientation.VERTICAL, true, true, false);
FileOutputStream jpg = null;
try {
//x = ".\\test.jpg";
//jpg = new FileOutputStream(x);
x = ServletUtilities.saveChartAsJPEG(chart, 500, 500,null);
String sFile = System.getProperty("java.io.tmpdir") + "\\" + x;
String dFile = this.appPath + "\\" + x;
copyTransfer(sFile,dFile);
//dFile = "C:\\MyWork\\pgUriage011\\Upp011\\build\\web" + "\\" + x;
//copyTransfer(sFile,dFile);
//dFile = "C:\\MyWork\\pgUriage011\\Upp011\\web" + "\\" + x;
//copyTransfer(sFile,dFile);
//ChartUtilities.writeChartAsJPEG(jpg,chart, 500, 500,null);
} catch (Exception e) {
//e.printStackTrace();
}
// グラフの出力(png,jpgで出力できます)
//File outputFile = new File("e:/temp/SampleBarChart.png");
//try {
// ChartUtilities.saveChartAsPNG(outputFile, chart, 500, 500);
//} catch (IOException ioEx) {
// //ioEx.printStackTrace();
//}
// バイナリ出力ストリームにJPEG形式で画像を出力
}
}
0 件のコメント:
コメントを投稿