目次 ⇒ JFreeChartサンプル
package jp.avaj.lib.chart;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.DefaultIntervalXYDataset;
import jp.avaj.lib.algo.ArListOnMap;
import jp.avaj.lib.algo.ArMap;
/**
■ JFreeChart-XYインターヴァルチャート-UIで特定データを強調する
・複数のデータが表示されていると分かりにくいことがある。
・ArcCategoryPlotEmphasizeWinを使うと、データ選択画面が表示され、特定のデータを強調表示できる.
・強調の方法はArcEmphasizeに定義されており、以下の方法がある。
・ITEM ⇒ ポイントを大きく表示する。
・LINE ⇒ 線を太く表示する。
・BLINK ⇒ ブリンクさせる.該当データを本来の色とグレイで交互表示する。0.5秒間隔。
・本サンプルではBLINKを使用する。
*/
public class Chart14_02 {
// 目次-インターヴァルチャート-IntervalChart-DefaultIntervalXYDatasetを使用したもの
A_Chart14 a_Chart14;
// 目次-Artery-JFreeChart用のライブラリ
A_Chart00 a_LibChartSampeContents;
public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
// DefaultIntervalXYDatasetの生成
DefaultIntervalXYDataset ds;
{
ArListOnMap<String,Chart14_01_Data> listOnMap = createData();
// シリーズ名をbだけ変更する
Map<String,String> names = ArMap.construct("b=B");
ds = ArcDefaultIntervalXYDataset.create(listOnMap,names,"x","xStart","xEnd","y","yStart","yEnd");
}
//
XYBarRenderer renderer = new XYBarRenderer ();
renderer.setUseYInterval(true); // これを指定しないと単なる縦棒になってしまう⇒Xには同様の指定はない
// Plotを作成して画面を表示する
XYPlot plot = new XYPlot(ds,new NumberAxis(),new NumberAxis(),renderer);
JFreeChart jfreeChart = new JFreeChart("XYインターヴァルチャート",(Plot)plot);
ChartFrame cFrame = new ChartFrame("XYインターヴァルチャート",(JFreeChart)jfreeChart);
cFrame.pack();
cFrame.setVisible(true);
// UIを起動する
new ArcXYPlotEmphasizeWin(cFrame,plot,ArcEmphasize.BLINK);
}
private static ArListOnMap<String,Chart14_01_Data> createData() {
List<Chart14_01_Data> list;
Map<String,List<Chart14_01_Data>> map = new HashMap<String,List<Chart14_01_Data>>();
list = new ArrayList<Chart14_01_Data>();
list.add(new Chart14_01_Data(2.0D,1.9D,2.2D,2.5D,2.4D,2.7D));
list.add(new Chart14_01_Data(3.0D,2.9D,3.1D,3.5D,2.5D,4.0D));
list.add(new Chart14_01_Data(4.5D,4.4D,4.6D,4.5D,3.5D,4.0D));
map.put("a",list);
list = new ArrayList<Chart14_01_Data>();
list.add(new Chart14_01_Data(0.8D,0.9D,1.2D,4.5D,4.4D,4.7D));
list.add(new Chart14_01_Data(2.5D,2.6D,2.7D,3.5D,3.5D,3.0D));
list.add(new Chart14_01_Data(5.0D,4.9D,5.1D,3.1D,3.0D,3.2D));
map.put("b",list);
return ArListOnMap.construct(map);
}
public static class Chart14_01_Data {
public Chart14_01_Data(double x,double xStart,double xEnd,double y,double yStart,double yEnd) {
this.x = x;
this.xStart = xStart;
this.xEnd = xEnd;
this.y = y;
this.yStart = y;
this.yEnd = yEnd;
}
double x;
double xStart;
double xEnd;
double y;
double yStart;
double yEnd;
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getXStart() {
return xStart;
}
public void setXStart(double xStart) {
this.xStart = xStart;
}
public double getXEnd() {
return xEnd;
}
public void setXEnd(double xEnd) {
this.xEnd = xEnd;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double getYStart() {
return yStart;
}
public void setYStart(double yStart) {
this.yStart = yStart;
}
public double getYEnd() {
return yEnd;
}
public void setYEnd(double yEnd) {
this.yEnd = yEnd;
}
}
}