JFreeChart – グラフの背景に設定した画像の貼り付け方式を設定するには
グラフの背景に設定した画像の貼り付け方式を設定するには、JFreeChartクラスのsetBackgroundImageAlignmentメソッドを使用します。
setBackgroundImageAlignmentメソッドで指定できる画像の貼り付け方式は以下の通りです。
画像の貼り付け方式 | Alignクラスで定義されている値 |
---|---|
左上 | Align.TOP_LEFT |
上 | Align.TOP |
右上 | Align.TOP_RIGHT |
左 | Align.LEFT |
中央 | Align.CENTER |
右 | Align.RIGHT |
左下 | Align.BOTTOM_LEFT |
下 | Align.BOTTOM |
右下 | Align.BOTTOM_RIGHT |
北西(左上) | Align.NORTH_WEST |
北(上) | Align.NORTH |
北東(右上) | Align.NORTH_EAST |
西(左) | Align.WEST |
東(右) | Align.EAST |
南西(左下) | Align.SOUTH_WEST |
南(下) | Align.SOUTH |
南東(右下) | Align.SOUTH_EAST |
領域に合わせて拡大縮小 (デフォルト) | Align.FIT |
水平方向を領域に合わせて拡大縮小 | Align.FIT_HORIZONTAL |
垂直方向を領域に合わせて拡大縮小 | Align.FIT_VERTICAL |
package net.tk_factory.sample.jfreechart.chart; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import net.tk_factory.sample.AbstractSample; 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.data.general.DefaultPieDataset; import org.jfree.ui.Align; /** * JFreeChartを使用したサンプルプログラムです。<br/> * <br/> * <b>内容</b> * <ol type="1"> * <li>グラフの背景に設定した画像の貼り付け方式を設定します。</li> * </ol> * * @author Takafumi Kondo (TK Factory) */ public class SampleSetBackgroundImageAlignment extends AbstractSample { /** クラス名 */ private static final String CLASS_NAME = SampleSetBackgroundImageAlignment.class.getSimpleName(); /** ロガー */ private static final Logger LOGGER = Logger.getLogger(SampleSetBackgroundImageAlignment.class.getName()); /** 出力ファイル名(PNG形式) */ private static final String OUT_FILE_NAME_PNG = SAMPLE_FILE_DIRECTORY + CLASS_NAME + ".png"; /** * SampleSetBackgroundImageAlignmentオブジェクトを構築すると、 * UnsupportedOperationExceptionがスローされます。<br/> */ protected SampleSetBackgroundImageAlignment() { 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()); //円グラフのデータを設定する DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("支持する", 14.3); dataset.setValue("どちらでもない", 70.1); dataset.setValue("支持しない", 15.6); //円グラフを生成する JFreeChart chart = ChartFactory.createPieChart( //・グラフタイトル "内閣支持率", //・データセット dataset, //・凡例の表示有無 true, //・ツールチップの表示有無 false, //・URL動的生成の有無 false); //グラフの背景に画像を設定する File file = new File(SAMPLE_FILE_DIRECTORY + "Sunset.jpg"); BufferedImage image = ImageIO.read(file); chart.setBackgroundImage(image); //グラフの背景に設定した画像の貼り付け方式を設定する //・左上 //chart.setBackgroundImageAlignment(Align.TOP_LEFT); //・上 //chart.setBackgroundImageAlignment(Align.TOP); //・右上 //chart.setBackgroundImageAlignment(Align.TOP_RIGHT); //・左 //chart.setBackgroundImageAlignment(Align.LEFT); //・中央 //chart.setBackgroundImageAlignment(Align.CENTER); //・右 //chart.setBackgroundImageAlignment(Align.RIGHT); //・左下 //chart.setBackgroundImageAlignment(Align.BOTTOM_LEFT); //・下 //chart.setBackgroundImageAlignment(Align.BOTTOM); //・右下 //chart.setBackgroundImageAlignment(Align.BOTTOM_RIGHT); //・北西(左上) //chart.setBackgroundImageAlignment(Align.NORTH_WEST); //・北(上) //chart.setBackgroundImageAlignment(Align.NORTH); //・北東(右上) //chart.setBackgroundImageAlignment(Align.NORTH_EAST); //・西(左) //chart.setBackgroundImageAlignment(Align.WEST); //・東(右) //chart.setBackgroundImageAlignment(Align.EAST); //・南西(左下) //chart.setBackgroundImageAlignment(Align.SOUTH_WEST); //・南(下) //chart.setBackgroundImageAlignment(Align.SOUTH); //・南東(右下) //chart.setBackgroundImageAlignment(Align.SOUTH_EAST); //・領域に合わせて拡大縮小 chart.setBackgroundImageAlignment(Align.FIT); //・水平方向を領域に合わせて拡大縮小 //chart.setBackgroundImageAlignment(Align.FIT_HORIZONTAL); //・垂直方向を領域に合わせて拡大縮小 //chart.setBackgroundImageAlignment(Align.FIT_VERTICAL); //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); } } }
関連記事
コメント 0