2010年11月23日火曜日

SWTChartを簡単に調査

SWTChartは最近EclipseMarketに新しく登録されたため、調査をしました。
現在のバージョンは0.6.0 最終更新が2009-07-31なので、もう数年あたり更新されていない。
これって更新されるのかな?

下記URLからダウンロードし、展開しdropinsに配置しeclipse再起動
http://sourceforge.net/projects/swt-chart/files/SWTChart/0.6.0/org.swtchart_0.6.0.zip/download


とりあえずサンプルを動作させてみる。
dropins\org.swtchart_0.6.0\EXAMPLES\org.swtchart.examplesをインポートして色々ソースコードを簡単に
読んでみました。ってか非常にコード少ないので簡単に読めます。

簡単に機能と実装方法をまとめました。

・AreaChart
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Area Chart Example");  
  6.   
  7. // ILineSeriesを利用  
  8. ILineSeries lineSeries1 = (ILineSeries) chart.getSeriesSet()  
  9.         .createSeries(SeriesType.LINE, "line series 1");  
  10. lineSeries1.setYSeries(ySeries1);  
  11. lineSeries1.setLineColor(Display.getDefault().getSystemColor(  
  12.         SWT.COLOR_RED));  
  13. //enableAreaをtrueでAreaChart表示  
  14. lineSeries1.enableArea(true);  
・BarChart
  1. Chart chart = new Chart(shell, SWT.NONE);  
  2. // set titles  
  3. chart.getTitle().setText("Bar Chart Example");  
  4. chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");  
  5. chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");  
  6.   
  7. // BarChart(IBarSeries)を表示  
  8. IBarSeries barSeries = (IBarSeries) chart.getSeriesSet().createSeries(  
  9.   SeriesType.BAR, "bar series");  
  10. barSeries.setYSeries(ySeries);  
・BarCharのカテゴリ
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Category Axis Example");  
  6. chart.getAxisSet().getXAxis(0).getTitle().setText("Month");  
  7. chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");  
  8.   
  9. // set category  
  10. chart.getAxisSet().getXAxis(0).enableCategory(true);  
  11. chart.getAxisSet().getXAxis(0).setCategorySeries(  
  12.         new String[] { "Jan""Feb""Mar""Apr""May" });  
  13.   
  14. // IBarSeriesを2つ作成すればカテゴリになる。  
  15. IBarSeries barSeries1 = (IBarSeries) chart.getSeriesSet().createSeries(  
  16.         SeriesType.BAR, "bar series 1");  
  17. barSeries1.setYSeries(ySeries1);  
  18. barSeries1.setBarColor(Display.getDefault().getSystemColor(  
  19.         SWT.COLOR_GREEN));  
  20.   
  21. IBarSeries barSeries2 = (IBarSeries) chart.getSeriesSet().createSeries(  
  22.         SeriesType.BAR, "bar series 2");  
  23. barSeries2.setYSeries(ySeries2);  
・ErrorBar
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // create series  
  5. ISeries series = chart.getSeriesSet()  
  6.   .createSeries(SeriesType.LINE, "line series");  
  7. series.setYSeries(ySeries);  
  8.   
  9. // ISeriesに対してErrorBarをVisibleにすればよい。  
  10. IErrorBar errorBar = series.getYErrorBar();  
  11. errorBar.setVisible(true);  
  12. errorBar.setError(0.1);  

・プロットの点を表示しないようにする。
  1. lineSeries.setSymbolType(PlotSymbolType.NONE);  

・ログスケール設定
  1. // set log scale  
  2. chart.getAxisSet().getYAxis(0).enableLogScale(true);  

・複数軸
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Multiple Axes Example");  
  6. chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");  
  7. chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude 1");  
  8.   
  9. // create second Y axis  
  10. int axisId = chart.getAxisSet().createYAxis();  
  11.   
  12. // set the properties of second Y axis  
  13. IAxis yAxis2 = chart.getAxisSet().getYAxis(axisId);  
  14. yAxis2.setPosition(Position.Secondary);  
  15. final Color RED = Display.getDefault().getSystemColor(SWT.COLOR_RED);  
  16. yAxis2.getTick().setForeground(RED);  
  17. yAxis2.getTitle().setForeground(RED);  
  18. yAxis2.getTitle().setText("Amplitude 2");  
  19.   
  20. // create line series  
  21. ILineSeries lineSeries1 = (ILineSeries) chart.getSeriesSet()  
  22.         .createSeries(SeriesType.LINE, "line series 1");  
  23. lineSeries1.setYSeries(ySeries1);  
  24. ILineSeries lineSeries2 = (ILineSeries) chart.getSeriesSet()  
  25.         .createSeries(SeriesType.LINE, "line series 2");  
  26. lineSeries2.setYSeries(ySeries2);  
  27. lineSeries2.setLineColor(RED);  
  28.   
  29. // assign series to second Y axis  
  30. lineSeries2.setYAxisId(axisId);  

・軸の方向変換
  1. // set the chart orientation  
  2. chart.setOrientation(SWT.VERTICAL);  

・散布図
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Scatter Chart Example");  
  6. chart.getAxisSet().getXAxis(0).getTitle().setText("Score A");  
  7. chart.getAxisSet().getYAxis(0).getTitle().setText("Score B");  
  8.   
  9. // create scatter series  
  10. ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()  
  11.   .createSeries(SeriesType.LINE, "scatter series");  
  12. scatterSeries.setLineStyle(LineStyle.NONE);  
  13. scatterSeries.setXSeries(xSeries);  
  14. scatterSeries.setYSeries(ySeries);  
・プロット数値の表示
  1. // set label visible  
  2. lineSeries.getLabel().setVisible(true);  
・スタック表示
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Stack Series Example");  
  6. chart.getAxisSet().getXAxis(0).getTitle().setText("Month");  
  7. chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");  
  8.   
  9. // set category  
  10. chart.getAxisSet().getXAxis(0).enableCategory(true);  
  11. chart.getAxisSet().getXAxis(0).setCategorySeries(  
  12.         new String[] { "Jan""Feb""Mar""Apr""May" });  
  13.   
  14. // create bar series  
  15. IBarSeries barSeries1 = (IBarSeries) chart.getSeriesSet().createSeries(  
  16.         SeriesType.BAR, "bar series 1");  
  17. barSeries1.setYSeries(ySeries1);  
  18. barSeries1.setBarColor(Display.getDefault().getSystemColor(  
  19.         SWT.COLOR_GREEN));  
  20.   
  21. IBarSeries barSeries2 = (IBarSeries) chart.getSeriesSet().createSeries(  
  22.         SeriesType.BAR, "bar series 2");  
  23. barSeries2.setYSeries(ySeries2);  
  24.   
  25. // enable stack series  
  26. barSeries1.enableStack(true);  
  27. barSeries2.enableStack(true);  
・ステップチャート
  1. // create a chart  
  2. Chart chart = new Chart(shell, SWT.NONE);  
  3.   
  4. // set titles  
  5. chart.getTitle().setText("Step Chart Example");  
  6. chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");  
  7. chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");  
  8.   
  9. // create line series  
  10. ILineSeries lineSeries = (ILineSeries) chart.getSeriesSet()  
  11.         .createSeries(SeriesType.LINE, "line series");  
  12. lineSeries.setYSeries(ySeries);  
  13. lineSeries.setSymbolType(PlotSymbolType.NONE);  
  14. lineSeries.enableStep(true);