- PR -

jfreechartに関する質問

1
投稿者投稿内容
タマ
ベテラン
会議室デビュー日: 2004/08/08
投稿数: 56
投稿日時: 2004-10-09 10:58
ご存知のかた教えていただきたいのですが、
jfreechartでグラフ内に文字を入れる方法グラフのあとに文字を入れる方法
教えていただけないでしょうか。

以下のような感じです

|
|---------------------------------
|文字をいれたい |文字をいれたい
|---------------------------------
|
|---------------------------------
|文字をいれたい |文字をいれたい
|---------------------------------


src=====================================================
package common;

import java.io.BufferedOutputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.CategoryDataset;
import org.jfree.data.DatasetUtilities;

public class test4 extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse res) {
int width = 640;
int height = 640;

try {
// 縦横サイズの指定
width = Integer.parseInt(req.getParameterValues ("width")[0]);
height = Integer.parseInt(req.getParameterValues ("height")[0]);
} catch (Exception e) {
e.printStackTrace();
}

// 棒グラフのJFreeChartを作成
JFreeChart chart = createChart();
// コンテンツタイプをpngにする.
res.setContentType("image/png");
OutputStream outputStream;
System.err.println("write png width = " + width + " / height = " + height);
try {
outputStream = new BufferedOutputStream(res.getOutputStream());
// JFreeChartをPNGとして出力
ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}

// 横軸
final String[] str_data_x = new String[]{
"計画"
,"EK"
};

/**
* 棒グラフのJFreeChartを作成する.
*/
private JFreeChart createChart () {
// 棒グラフのデータ
double[][] data = new double[][]
{{1.0, 2.0, 3.0, 4.0},
{13.0, 14.0, 15.0, 16.0}};
// CategoryDatasetオブジェクトの作成
CategoryDataset cData = DatasetUtilities.createCategoryDataset("RowKey ", "ColKey ", data);
// CategoryDatasetをデータにしてJFreeChartを作成
JFreeChart barChart = ChartFactory.createBarChart3D ("SampleBarChart",
"categoryAxisLabel",
"valueAxisLabel",
cData, PlotOrientation.HORIZONTAL,
true, true, true);
return barChart;




}

}
na2fusi
会議室デビュー日: 2003/06/08
投稿数: 16
投稿日時: 2004-10-28 20:09
1、StandardCategoryLabelGeneratorのgenerateItemLabelをオーバーライドする。

class LabelGenerator extends StandardCategoryLabelGenerator {
public String generateItemLabel(
CategoryDataset categorydataset,
int i,
int j) {
return <<ここに表示させたい文字列をセットする。>> ;
}
}

2、createChart()メソッドの最後returnで返す前に以下のロジックを追加してください。
------
CategoryPlot plot = barChart.getCategoryPlot();
BarRenderer barrenderer = (BarRenderer)plot.getRenderer();
barrenderer.setLabelGenerator(new LabelGenerator());
barrenderer.setItemLabelsVisible(true);
------
以上のコーディングでバー横に文字列が表示されるはずです。
(ただしデフォルトの位置)
さらに文字位置を指定するには続けて
------
ItemLabelPosition itemlabelposition =
new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -1.5707963267948966D);
barrenderer.setPositiveItemLabelPosition(itemlabelposition);
------
のようにItemLabelPositionクラスのインスタンスを生成し、
BarRendererクラスのsetPositiveItemLabelPositionにセットすれば
文字位置を調整できるはずです。
引数は例ですのでご自分でいろいろと調整してみてください。)



1

スキルアップ/キャリアアップ(JOB@IT)