package jfreechart; import java.io.File; import java.io.IOException; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.StandardCategoryToolTipGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.CombinedDomainCategoryPlot; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.data.category.DefaultCategoryDataset; /** * 複数グラフエリアをもつグラフ */ public class CombinedChartSample{ public static void main(String[] args) { // 1つ目のデータセットの生成 DefaultCategoryDataset lineDataset = new DefaultCategoryDataset(); String lineSeries1 = "First"; String lineSeries2 = "Second"; String category1 = "Category1"; String category2 = "Category2"; String category3 = "Category3"; String category4 = "Category4"; lineDataset.addValue(1.0, lineSeries1, category1); lineDataset.addValue(4.0, lineSeries1, category2); lineDataset.addValue(3.0, lineSeries1, category3); lineDataset.addValue(5.0, lineSeries1, category4); lineDataset.addValue(5.0, lineSeries2, category1); lineDataset.addValue(7.0, lineSeries2, category2); lineDataset.addValue(6.0, lineSeries2, category3); lineDataset.addValue(8.0, lineSeries2, category4); // 2つ目のデータセットの生成 DefaultCategoryDataset barDataset = new DefaultCategoryDataset(); String barSeries1 = "Third"; String barSeries2 = "Fourth"; barDataset.addValue(11.0, barSeries1, category1); barDataset.addValue(14.0, barSeries1, category2); barDataset.addValue(13.0, barSeries1, category3); barDataset.addValue(15.0, barSeries1, category4); barDataset.addValue(15.0, barSeries2, category1); barDataset.addValue(17.0, barSeries2, category2); barDataset.addValue(16.0, barSeries2, category3); barDataset.addValue(18.0, barSeries2, category4); // 折れ線グラフの生成 NumberAxis lineRangeAxis = new NumberAxis("Value"); lineRangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); LineAndShapeRenderer renderer1 = new LineAndShapeRenderer(); renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); CategoryPlot linePlot = new CategoryPlot(lineDataset, null, lineRangeAxis, renderer1); linePlot.setDomainGridlinesVisible(true); // 棒グラフの作成 NumberAxis barRangeAxis = new NumberAxis("Value"); barRangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer barRenderer = new BarRenderer(); barRenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); CategoryPlot barPlot = new CategoryPlot(barDataset, null, barRangeAxis, barRenderer); barPlot.setDomainGridlinesVisible(true); CategoryAxis domainAxis = new CategoryAxis("Category"); // グラフの描画領域を生成 CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis); // 作成したグラフのPlotを追加(第二引数はそれぞれの割合) plot.add(linePlot, 3); plot.add(barPlot, 7); // Plotを指定してJFreeChartを生成 JFreeChart chart = new JFreeChart( "Sample Combined Chart", JFreeChart.DEFAULT_TITLE_FONT, plot, true ); // PNGに出力 File outputFile = new File("./output/CombinedChartSample.png"); try { ChartUtilities.saveChartAsPNG(outputFile, chart, 500, 500); } catch (IOException ioEx) { ioEx.printStackTrace(); } } }