JFreeChart – 棒グラフのバーの色を設定するには
棒グラフのバーの色を設定するには、BarRendererクラスのsetSeriesPaintメソッドを使用します。
package net.tk_factory.example.jfreechart.barrenderer; import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import net.tk_factory.example.AbstractExample; import org.apache.log4j.Logger; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; 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; /** * JFreeChartを使用したサンプルプログラムです。<br/> * <br/> * <b>内容</b> * <ol type="1"> * <li>棒グラフのバーの色を設定します。</li> * </ol> * * @author Takafumi Kondo (TK Factory) */ public class ExampleSetSeriesPaint extends AbstractExample { /** クラス名 */ private static final String CLASS_NAME = ExampleSetSeriesPaint.class.getSimpleName(); /** ロガー */ private static final Logger LOGGER = Logger.getLogger(ExampleSetSeriesPaint.class.getName()); /** 出力ファイル名(PNG形式) */ private static final String OUT_FILE_NAME_PNG = EXAMPLE_FILE_DIRECTORY + CLASS_NAME + ".png"; /** * ExampleSetSeriesPaintオブジェクトを構築すると、 * UnsupportedOperationExceptionがスローされます。<br/> */ protected ExampleSetSeriesPaint() { throw new UnsupportedOperationException(); } /** * mainメソッドです。<br/> * * @param args 引数 */ public static void main(String[] args) { LOGGER.info("[START]" + CLASS_NAME); FileOutputStream png = null; try { //すでに出力ファイルが存在している場合は削除する deleteExistsFile(OUT_FILE_NAME_PNG); //レガシーテーマを設定する ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); //棒グラフのデータを設定する DefaultCategoryDataset dataset = new DefaultCategoryDataset(); //全体 dataset.addValue(14.3, "支持する", "全体"); dataset.addValue(70.1, "どちらでもない", "全体"); dataset.addValue(15.6, "支持しない", "全体"); //20代 dataset.addValue(10.7, "支持する", "20代"); dataset.addValue(68.0, "どちらでもない", "20代"); dataset.addValue(21.3, "支持しない", "20代"); //30代 dataset.addValue(11.6, "支持する", "30代"); dataset.addValue(69.7, "どちらでもない", "30代"); dataset.addValue(18.7, "支持しない", "30代"); //40代 dataset.addValue(15.1, "支持する", "40代"); dataset.addValue(71.7, "どちらでもない", "40代"); dataset.addValue(13.2, "支持しない", "40代"); //50代 dataset.addValue(14.6, "支持する", "50代"); dataset.addValue(72.4, "どちらでもない", "50代"); dataset.addValue(13.0, "支持しない", "50代"); //60代以上 dataset.addValue(24.6, "支持する", "60代以上"); dataset.addValue(68.5, "どちらでもない", "60代以上"); dataset.addValue(6.9, "支持しない", "60代以上"); //棒グラフを生成する JFreeChart chart = ChartFactory.createBarChart( //・グラフタイトル "内閣支持率", //・カテゴリ軸ラベル "年代", //・値軸ラベル "支持率", //・データセット dataset, //・グラフの出力方向 PlotOrientation.VERTICAL, //・凡例の表示有無 true, //・ツールチップの表示有無 false, //・URL動的生成の有無 false); CategoryPlot categoryPlot = chart.getCategoryPlot(); BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer(); //棒グラフのバーの色を設定する renderer.setSeriesPaint(0, Color.BLUE); renderer.setSeriesPaint(1, Color.GREEN); renderer.setSeriesPaint(2, Color.RED); //PNG形式でファイルへ保存する png = new FileOutputStream(OUT_FILE_NAME_PNG); ChartUtilities.writeChartAsPNG(png, chart, 600, 400); } catch (IOException ioex) { LOGGER.error(getStackTrace(ioex)); } finally { try { if (png != null) { png.close(); } } catch (IOException ioex) { LOGGER.error(getStackTrace(ioex)); } LOGGER.info("[E N D]" + CLASS_NAME); } } }
関連記事
ソースを見直し、一部、修正しました。