- - PR -
jfreechartに関する質問
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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; } } |
|
投稿日時: 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