/** * Adjusts the current minimum and maximum values based on the provided Entry object. * * @param e * @param axis */ protected void calcMinMax(Entry e, AxisDependency axis) { if (mYMax < e.getY()) mYMax = e.getY(); if (mYMin > e.getY()) mYMin = e.getY(); if (mXMax < e.getX()) mXMax = e.getX(); if (mXMin > e.getX()) mXMin = e.getX(); if (axis == AxisDependency.LEFT) { if (mLeftAxisMax < e.getY()) mLeftAxisMax = e.getY(); if (mLeftAxisMin > e.getY()) mLeftAxisMin = e.getY(); } else { if (mRightAxisMax < e.getY()) mRightAxisMax = e.getY(); if (mRightAxisMin > e.getY()) mRightAxisMin = e.getY(); } }
@Override public void onValueSelected(Entry e, Highlight h) { Log.i("Entry selected", e.toString()); chart.centerViewToAnimated(e.getX(), e.getY(), chart.getData().getDataSetByIndex(h.getDataSetIndex()) .getAxisDependency(), 500); //chart.zoomAndCenterAnimated(2.5f, 2.5f, e.getX(), e.getY(), chart.getData().getDataSetByIndex(dataSetIndex) // .getAxisDependency(), 1000); //chart.zoomAndCenterAnimated(1.8f, 1.8f, e.getX(), e.getY(), chart.getData().getDataSetByIndex(dataSetIndex) // .getAxisDependency(), 1000); }
/** * Compares value, xIndex and data of the entries. Returns true if entries * are equal in those points, false if not. Does not check by hash-code like * it's done by the "equals" method. * * @param e * @return */ public boolean equalTo(Entry e) { if (e == null) return false; if (e.getData() != this.getData()) return false; if (Math.abs(e.x - this.x) > Utils.FLOAT_EPSILON) return false; if (Math.abs(e.getY() - this.getY()) > Utils.FLOAT_EPSILON) return false; return true; }
entries.add(new Entry(Float.parseFloat(split[0]), Integer.parseInt(split[1]))); } else {
@Test public void testGetEntryForXValue() { List<Entry> entries = new ArrayList<Entry>(); entries.add(new Entry(10, 10)); entries.add(new Entry(15, 5)); entries.add(new Entry(21, 5)); ScatterDataSet set = new ScatterDataSet(entries, ""); Entry closest = set.getEntryForXValue(17, Float.NaN, DataSet.Rounding.CLOSEST); assertEquals(15, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); closest = set.getEntryForXValue(17, Float.NaN, DataSet.Rounding.DOWN); assertEquals(15, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); closest = set.getEntryForXValue(15, Float.NaN, DataSet.Rounding.DOWN); assertEquals(15, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); closest = set.getEntryForXValue(14, Float.NaN, DataSet.Rounding.DOWN); assertEquals(10, closest.getX(), 0.01f); assertEquals(10, closest.getY(), 0.01f); closest = set.getEntryForXValue(17, Float.NaN, DataSet.Rounding.UP); assertEquals(21, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); closest = set.getEntryForXValue(21, Float.NaN, DataSet.Rounding.UP); assertEquals(21, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); closest = set.getEntryForXValue(21, Float.NaN, DataSet.Rounding.CLOSEST); assertEquals(21, closest.getX(), 0.01f); assertEquals(5, closest.getY(), 0.01f); }
/** * Returns the value of this BarEntry. If the entry is stacked, it returns the positive sum of all values. * * @return */ @Override public float getY() { return super.getY(); }
/** * Returns the DataSet that contains the provided Entry, or null, if no * DataSet contains this Entry. * * @param e * @return */ public T getDataSetForEntry(Entry e) { if (e == null) return null; for (int i = 0; i < mDataSets.size(); i++) { T set = mDataSets.get(i); for (int j = 0; j < set.getEntryCount(); j++) { if (e.equalTo(set.getEntryForXValue(e.getX(), e.getY()))) return set; } } return null; }
@Override public void onEntryMoved(Entry entry) { Log.i(Chart.LOG_TAG, "Point moved " + entry.toString()); } }
entries.add(new Entry(Float.parseFloat(split[1]), Float.parseFloat(split[0]))); } else {
values.add(new Entry(0, 10)); values.add(new Entry(1, 20)); values.add(new Entry(2, 30)); values.add(new Entry(3, 40)); values.add(new Entry(3, 50)); // duplicate values.add(new Entry(4, 60)); values.add(new Entry(4, 70)); // duplicate values.add(new Entry(5, 80)); values.add(new Entry(6, 90)); values.add(new Entry(7, 100)); values.add(new Entry(8, 110)); values.add(new Entry(8, 120)); // duplicate assertEquals(0, closest.getX(), 0.01f); assertEquals(10, closest.getY(), 0.01f); assertEquals(5, closest.getX(), 0.01f); assertEquals(80, closest.getY(), 0.01f); assertEquals(5, closest.getX(), 0.01f); assertEquals(80, closest.getY(), 0.01f); assertEquals(5, closest.getX(), 0.01f); assertEquals(80, closest.getY(), 0.01f); assertEquals(7, closest.getX(), 0.01f); assertEquals(100, closest.getY(), 0.01f); assertEquals(4, closest.getX(), 0.01f);
/** * returns a string representation of the entry containing x-index and value */ @Override public String toString() { return "Entry, x: " + x + " y: " + getY(); }
/** callback for each new entry drawn with the finger */ @Override public void onEntryAdded(Entry entry) { Log.i(Chart.LOG_TAG, entry.toString()); }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeFloat(this.x); dest.writeFloat(this.getY()); if (getData() != null) { if (getData() instanceof Parcelable) { dest.writeInt(1); dest.writeParcelable((Parcelable) this.getData(), flags); } else { throw new ParcelFormatException("Cannot parcel an Entry with non-parcelable data"); } } else { dest.writeInt(0); } }