private void initLine(XYSeries series) {

    Random r = new Random();
    xTemp = 0;
    yTemp = r.nextInt(100);

    count = series.getItemCount();
    if (count > 10) {
      count = 10;
    }

    for (int i = 0; i < count; i++) {
      x[i] = series.getX(i);
      y[i] = series.getY(i);
    }
    series.clear();

    series.add(xTemp, yTemp);

    for (int i = 0; i < count; i++) {
      series.add(x[i] + 1, y[i]);
    }
  }
Esempio n. 2
0
  // ========================================================================
  void drawAllDataSets(
      Canvas canvas,
      Rect frame,
      Paint hash_mark_label_paint,
      double xPixelsPerUnit,
      double yPixelsPerUnit,
      double ySecondaryPixelsPerUnit) {
    //			double xPixelsPerUnit, double ySecondaryPixelsPerUnit) {

    MinMax x_span = mRenderer.getXAxisSpan();

    for (int i = 0; i < mDataset.getSeriesCount(); i++) {
      XYSeries series = mDataset.getSeriesAt(i);
      if (series.getItemCount() == 0) {
        continue;
      }

      SimpleSeriesRenderer seriesRenderer = mRenderer.getSeriesRendererAt(i);

      MinMax vertical_series_span;
      double vertical_pixels_per_unit;
      if (mRenderer.hasSecondaryYAxis() && seriesRenderer.getUsesSecondaryAxis()) {
        vertical_series_span = mRenderer.getYSecondaryAxisSpan();
        vertical_pixels_per_unit = ySecondaryPixelsPerUnit;
      } else {
        vertical_series_span = mRenderer.getYPrimaryAxisSpan();
        vertical_pixels_per_unit = yPixelsPerUnit;
      }

      List<PointF> points = new ArrayList<PointF>();
      for (int j = 0; j < series.getItemCount(); j++) {
        PointF point =
            new PointF(
                (float)
                    (frame.left
                        + xPixelsPerUnit
                            * (series.getX(j).doubleValue() - x_span.min.doubleValue())),
                (float)
                    (frame.bottom
                        - vertical_pixels_per_unit
                            * (series.getY(j).doubleValue()
                                - vertical_series_span.min.doubleValue())));
        points.add(point);
      }

      drawSeries(
          canvas,
          hash_mark_label_paint,
          points,
          seriesRenderer,
          (float) xPixelsPerUnit,
          (float) vertical_pixels_per_unit,
          Math.min(
              frame.bottom,
              (float)
                  (frame.bottom
                      + vertical_pixels_per_unit * vertical_series_span.min.doubleValue())),
          i);

      // Render glyphs atop the chart if necessary
      if (isRenderPoints(seriesRenderer)) {
        ScatterChart pointsChart = new ScatterChart(mDataset, mRenderer);
        pointsChart.drawSeries(
            canvas,
            hash_mark_label_paint,
            points,
            seriesRenderer,
            (float) xPixelsPerUnit,
            (float) vertical_pixels_per_unit,
            0,
            i);
      }

      hash_mark_label_paint.setTextSize(DEFAULT_HASH_MARK_TEXT_SIZE);
      if (Orientation.HORIZONTAL.equals(mRenderer.getOrientation())) {
        hash_mark_label_paint.setTextAlign(Align.CENTER);
      } else {
        hash_mark_label_paint.setTextAlign(Align.LEFT);
      }
      if (mRenderer.isDisplayChartValues()) {
        drawChartValuesText(canvas, series, hash_mark_label_paint, points, i);
      }
    }
  }
Esempio n. 3
0
  protected List<Double> getXLabels(double min, double max, int count) {
    final List<Double> result = new ArrayList<Double>();
    if (!mRenderer.isXRoundedLabels()) {
      if (mDataset.getSeriesCount() > 0) {
        XYSeries series = mDataset.getSeriesAt(0);
        int length = series.getItemCount();
        int intervalLength = 0;
        int startIndex = -1;
        for (int i = 0; i < length; i++) {
          double value = series.getX(i);
          if (min <= value && value <= max) {
            intervalLength++;
            if (startIndex < 0) {
              startIndex = i;
            }
          }
        }
        if (intervalLength < count) {
          for (int i = startIndex; i < startIndex + intervalLength; i++) {
            result.add(series.getX(i));
          }
        } else {
          float step = (float) intervalLength / count;
          int intervalCount = 0;
          for (int i = 0; i < length && intervalCount < count; i++) {
            double value = series.getX(Math.round(i * step));
            if (min <= value && value <= max) {
              result.add(value);
              intervalCount++;
            }
          }
        }
        return result;
      } else {
        return super.getXLabels(min, max, count);
      }
    }
    if (mStartPoint == null) {
      mStartPoint =
          min - (min % DAY) + DAY + new Date(Math.round(min)).getTimezoneOffset() * 60 * 1000;
    }
    if (count > 25) {
      count = 25;
    }

    final double cycleMath = (max - min) / count;
    if (cycleMath <= 0) {
      return result;
    }
    double cycle = DAY;

    if (cycleMath <= DAY) {
      while (cycleMath < cycle / 2) {
        cycle = cycle / 2;
      }
    } else {
      while (cycleMath > cycle) {
        cycle = cycle * 2;
      }
    }

    double val = mStartPoint - Math.floor((mStartPoint - min) / cycle) * cycle;
    int i = 0;
    while (val < max && i++ <= count) {
      result.add(val);
      val += cycle;
    }

    return result;
  }
Esempio n. 4
0
 /**
  * Sets the x axis range so all the values fit the way I expect
  *
  * @param index
  */
 public void fitData(int index) {
   XYSeries series = mChart.getDataset().getSeriesAt(index);
   double barLength = (series.getMaxX() - series.getMinX()) / series.getItemCount();
   mChart.getRenderer().setXAxisMax(series.getMaxX() + barLength / 2);
   mChart.getRenderer().setXAxisMin(series.getMinX() - barLength / 2);
 }