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
        // create a chart
        Chart chart = new Chart(shell, SWT.NONE);

        // set titles
        chart.getTitle().setText("Area Chart Example");

        // ILineSeriesを利用
        ILineSeries lineSeries1 = (ILineSeries) chart.getSeriesSet()
                .createSeries(SeriesType.LINE, "line series 1");
        lineSeries1.setYSeries(ySeries1);
        lineSeries1.setLineColor(Display.getDefault().getSystemColor(
                SWT.COLOR_RED));
        //enableAreaをtrueでAreaChart表示
        lineSeries1.enableArea(true);
・BarChart
  Chart chart = new Chart(shell, SWT.NONE);
  // set titles
  chart.getTitle().setText("Bar Chart Example");
  chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");
  chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");

  // BarChart(IBarSeries)を表示
  IBarSeries barSeries = (IBarSeries) chart.getSeriesSet().createSeries(
    SeriesType.BAR, "bar series");
  barSeries.setYSeries(ySeries);
・BarCharのカテゴリ
        // create a chart
        Chart chart = new Chart(shell, SWT.NONE);

        // set titles
        chart.getTitle().setText("Category Axis Example");
        chart.getAxisSet().getXAxis(0).getTitle().setText("Month");
        chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");

        // set category
        chart.getAxisSet().getXAxis(0).enableCategory(true);
        chart.getAxisSet().getXAxis(0).setCategorySeries(
                new String[] { "Jan", "Feb", "Mar", "Apr", "May" });

        // IBarSeriesを2つ作成すればカテゴリになる。
        IBarSeries barSeries1 = (IBarSeries) chart.getSeriesSet().createSeries(
                SeriesType.BAR, "bar series 1");
        barSeries1.setYSeries(ySeries1);
        barSeries1.setBarColor(Display.getDefault().getSystemColor(
                SWT.COLOR_GREEN));

        IBarSeries barSeries2 = (IBarSeries) chart.getSeriesSet().createSeries(
                SeriesType.BAR, "bar series 2");
        barSeries2.setYSeries(ySeries2);
・ErrorBar
  // create a chart
  Chart chart = new Chart(shell, SWT.NONE);
  
  // create series
  ISeries series = chart.getSeriesSet()
    .createSeries(SeriesType.LINE, "line series");
  series.setYSeries(ySeries);
  
  // ISeriesに対してErrorBarをVisibleにすればよい。
  IErrorBar errorBar = series.getYErrorBar();
  errorBar.setVisible(true);
  errorBar.setError(0.1);

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


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

・複数軸
        // create a chart
        Chart chart = new Chart(shell, SWT.NONE);

        // set titles
        chart.getTitle().setText("Multiple Axes Example");
        chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");
        chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude 1");

        // create second Y axis
        int axisId = chart.getAxisSet().createYAxis();

        // set the properties of second Y axis
        IAxis yAxis2 = chart.getAxisSet().getYAxis(axisId);
        yAxis2.setPosition(Position.Secondary);
        final Color RED = Display.getDefault().getSystemColor(SWT.COLOR_RED);
        yAxis2.getTick().setForeground(RED);
        yAxis2.getTitle().setForeground(RED);
        yAxis2.getTitle().setText("Amplitude 2");

        // create line series
        ILineSeries lineSeries1 = (ILineSeries) chart.getSeriesSet()
                .createSeries(SeriesType.LINE, "line series 1");
        lineSeries1.setYSeries(ySeries1);
        ILineSeries lineSeries2 = (ILineSeries) chart.getSeriesSet()
                .createSeries(SeriesType.LINE, "line series 2");
        lineSeries2.setYSeries(ySeries2);
        lineSeries2.setLineColor(RED);

        // assign series to second Y axis
        lineSeries2.setYAxisId(axisId);

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

・散布図
  // create a chart
  Chart chart = new Chart(shell, SWT.NONE);

  // set titles
  chart.getTitle().setText("Scatter Chart Example");
  chart.getAxisSet().getXAxis(0).getTitle().setText("Score A");
  chart.getAxisSet().getYAxis(0).getTitle().setText("Score B");

  // create scatter series
  ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
    .createSeries(SeriesType.LINE, "scatter series");
  scatterSeries.setLineStyle(LineStyle.NONE);
  scatterSeries.setXSeries(xSeries);
  scatterSeries.setYSeries(ySeries);
・プロット数値の表示
  // set label visible
  lineSeries.getLabel().setVisible(true);
・スタック表示
        // create a chart
        Chart chart = new Chart(shell, SWT.NONE);

        // set titles
        chart.getTitle().setText("Stack Series Example");
        chart.getAxisSet().getXAxis(0).getTitle().setText("Month");
        chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");

        // set category
        chart.getAxisSet().getXAxis(0).enableCategory(true);
        chart.getAxisSet().getXAxis(0).setCategorySeries(
                new String[] { "Jan", "Feb", "Mar", "Apr", "May" });

        // create bar series
        IBarSeries barSeries1 = (IBarSeries) chart.getSeriesSet().createSeries(
                SeriesType.BAR, "bar series 1");
        barSeries1.setYSeries(ySeries1);
        barSeries1.setBarColor(Display.getDefault().getSystemColor(
                SWT.COLOR_GREEN));

        IBarSeries barSeries2 = (IBarSeries) chart.getSeriesSet().createSeries(
                SeriesType.BAR, "bar series 2");
        barSeries2.setYSeries(ySeries2);

        // enable stack series
        barSeries1.enableStack(true);
        barSeries2.enableStack(true);
・ステップチャート
        // create a chart
        Chart chart = new Chart(shell, SWT.NONE);
        
        // set titles
        chart.getTitle().setText("Step Chart Example");
        chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");
        chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");

        // create line series
        ILineSeries lineSeries = (ILineSeries) chart.getSeriesSet()
                .createSeries(SeriesType.LINE, "line series");
        lineSeries.setYSeries(ySeries);
        lineSeries.setSymbolType(PlotSymbolType.NONE);
        lineSeries.enableStep(true);