package jfreechart; import java.awt.BasicStroke; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Paint; import java.io.File; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.Legend; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.DefaultCategoryDataset; /** * 棒グラフのサンプル */ public class BarChartSample1 { public static void main(String[] args) { // データセットの作成 String series1 = "First"; String series2 = "Second"; String series3 = "Third"; // カテゴリーの設定 String category1 = "Category 1"; String category2 = "Category 2"; String category3 = "Category 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("Sample Bart Chart1", "Category", "Value", dataset, PlotOrientation.VERTICAL, true, true, false); // JFreeChartのカスタマイズ // グラフ全体の背景色の設定 Paint bgPaint = chart.getBackgroundPaint(); chart.setBackgroundPaint(Color.WHITE); // グラフ全体の境界線の設定 chart.setBorderVisible( true); chart.setBorderPaint( Color.BLACK); chart.setBorderStroke( new BasicStroke(5)); // 描画領域の設定 CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setRangeGridlinePaint(Color.BLUE); plot.setDomainGridlinesVisible(false); // 横軸の設定 CategoryAxis axis = plot.getDomainAxis(); axis.setLowerMargin(0.03); axis.setUpperMargin(0.03); axis.setCategoryLabelPositions(CategoryLabelPositions .createUpRotationLabelPositions(Math.PI / 6.0)); // 縦軸の設定 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // 凡例の設定 Legend legend = chart.getLegend(); legend.setAnchor( Legend.EAST); // Rendererの設定 BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setItemMargin(0.30); renderer.setDrawBarOutline(false); // バーのカラー設定 GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); // PNGに出力 File outputFile = new File("./output/SampleBarChart1.png"); try { ChartUtilities.saveChartAsPNG(outputFile, chart, 500, 500); } catch (IOException ioEx) { ioEx.printStackTrace(); } } }