Esempio n. 1
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);
  }
  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;
  }