예제 #1
0
  public void setRegion(String region) {
    this.currentRegion = region;
    renderer.setChartTitle(region);
    renderer.getSeriesRendererAt(0).setColor(colors[viewMode]);
    ((XYSeriesRenderer) renderer.getSeriesRendererAt(0))
        .setFillBelowLineColor(0x33000000 | colors[viewMode]);
    if (getComponentForm() != null) {

      XYMultiSeriesTransition t = new XYMultiSeriesTransition(chart, dataSet);
      RegionData[] rdArr = data.getRegionData(region);
      for (RegionData rd : rdArr) {
        switch (viewMode) {
          case VIEW_MODE_POPULATION:
            dataSet.getSeriesAt(0).setTitle("Population");
            t.getBuffer().getSeriesAt(POPULATION).add(rd.year, rd.pop);
            break;
          case VIEW_MODE_DENSITY:
            dataSet.getSeriesAt(0).setTitle("Density (People per square mile)");
            t.getBuffer().getSeriesAt(POPULATION).add(rd.year, rd.density);
            break;
          default:
            throw new RuntimeException("Illegal view mode.");
        }

        // t.getBuffer().getSeriesAt(DENSITY).add(rd.year, rd.density);
        // t.getBuffer().getSeriesAt(RANK).add(rd.year, rd.rank);
      }
      t.animateChart();
    } else {
      RegionData[] rdArr = data.getRegionData(region);
      renderer.getSeriesRendererAt(0).setColor(colors[viewMode]);
      for (RegionData rd : rdArr) {

        switch (viewMode) {
          case VIEW_MODE_POPULATION:
            dataSet.getSeriesAt(POPULATION).add(rd.year, rd.pop);
            dataSet.getSeriesAt(0).setTitle("Population");

            break;
          case VIEW_MODE_DENSITY:
            dataSet.getSeriesAt(0).setTitle("Density (People per square mile)");
            dataSet.getSeriesAt(POPULATION).add(rd.year, rd.density);
            break;
          default:
            throw new RuntimeException("Illegal view mode");
        }
      }
      Log.p("Finished adding pop data");
    }
  }
예제 #2
0
  /**
   * Builds an XY multiple series renderer.
   *
   * @param colors the series rendering color
   * @param styles the series point style
   * @return the XY multiple series renderer
   */
  protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    renderer.setAxisTitleTextSize(25);
    renderer.setChartTitleTextSize(25);
    renderer.setLabelsTextSize(25);
    renderer.setLegendTextSize(25);
    renderer.setPointSize(10f);

    renderer.setBackgroundColor(ColorUtil.BLACK);
    renderer.setApplyBackgroundColor(true);

    renderer.setMargins(new int[] {20, 30, 15, 20});

    for (int i = 0; i < colors.length; i++) {
      renderer.addSeriesRenderer(getXYSeriesRenderer(colors[i], styles[i]));
    }

    return renderer;
  }
예제 #3
0
  /**
   * Sets a few of the series renderer settings.
   *
   * @param renderer the renderer to set the properties to
   * @param title the chart title
   * @param xTitle the title for the X axis
   * @param yTitle the title for the Y axis
   * @param xMin the minimum value on the X axis
   * @param xMax the maximum value on the X axis
   * @param yMin the minimum value on the Y axis
   * @param yMax the maximum value on the Y axis
   * @param axesColor the axes color
   * @param labelsColor the labels color
   */
  protected void setChartSettings(
      XYMultipleSeriesRenderer renderer,
      String title,
      String xTitle,
      String yTitle,
      double xMin,
      double xMax,
      double yMin,
      double yMax,
      int axesColor,
      int labelsColor) {

    renderer.setChartTitle(title);
    renderer.setXTitle(xTitle);
    renderer.setYTitle(yTitle);
    renderer.setXAxisMin(xMin);
    renderer.setXAxisMax(xMax);
    renderer.setYAxisMin(yMin);
    renderer.setYAxisMax(yMax);
    renderer.setAxesColor(axesColor);
    renderer.setLabelsColor(labelsColor);
  }
예제 #4
0
  /**
   * Builds a bar multiple series renderer to use the provided colors.
   *
   * @param colors the series renderers colors
   * @return the bar multiple series renderer
   */
  protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    renderer.setAxisTitleTextSize(25);
    renderer.setChartTitleTextSize(25);
    renderer.setLabelsTextSize(25);
    renderer.setLegendTextSize(25);

    renderer.setBackgroundColor(ColorUtil.BLACK);
    renderer.setApplyBackgroundColor(true);

    int length = colors.length;

    for (int i = 0; i < length; i++) {
      XYSeriesRenderer r = new XYSeriesRenderer();
      r.setColor(colors[i]);
      renderer.addSeriesRenderer(r);
    }

    return renderer;
  }
예제 #5
0
  public DensityChart(PopulationData data) {

    colors = new int[] {0x660000, 0x006600};
    dataSet = new XYMultipleSeriesDataset();
    XYSeries[] series = new XYSeries[] {new XYSeries("Population")};

    renderer = new XYMultipleSeriesRenderer();
    XYSeriesRenderer[] renderers =
        new XYSeriesRenderer[] {
          new XYSeriesRenderer(),
        };

    for (XYSeriesRenderer r : renderers) {
      r.setLineWidth(2);
      r.setColor(0xffff0000);
      r.setFillBelowLine(true);
      r.setFillBelowLineColor(0x33ff0000);
      renderer.addSeriesRenderer(r);
    }
    renderer.setBackgroundColor(0xff000000);
    renderer.setInitialRange(new double[] {1900, 2010, 0, 800000});
    renderer.setXAxisMin(1910);
    renderer.setMarginsColor(0xffffff);
    renderer.setAxesColor(0x0);
    renderer.setXLabelsColor(0x0);
    renderer.setYLabelsColor(0, 0x0);
    renderer.setShowGridX(true);
    renderer.setGridColor(0xcccccc);

    dataSet.addAllSeries(Arrays.asList(series));

    LineChart lc =
        new LineChart(dataSet, renderer) {

          @Override
          protected ClickableArea[] clickableAreasForPoints(
              List<Float> points,
              List<Double> values,
              float yAxisValue,
              int seriesIndex,
              int startIndex) {
            ClickableArea[] hotspots =
                super.clickableAreasForPoints(points, values, yAxisValue, seriesIndex, startIndex);
            for (ClickableArea area : hotspots) {
              area.getRect().setY(0);
              area.getRect().setHeight(10000);
            }
            return hotspots;
          }
        };

    chart =
        new ChartComponent(lc) {

          @Override
          protected void seriesPressed(SeriesSelection sel) {
            super.seriesPressed(sel);
            yearPressed((int) sel.getXValue());
          }
        };

    this.setLayout(new BorderLayout());
    this.addComponent(BorderLayout.CENTER, chart);
    this.data = data;
  }