Search in sources :

Example 21 with Entry

use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.

the class PieHighlighter method getClosestHighlight.

@Override
protected Highlight getClosestHighlight(int index, float x, float y) {
    IPieDataSet set = mChart.getData().getDataSet();
    final Entry entry = set.getEntryForIndex(index);
    return new Highlight(index, entry.getY(), x, y, 0, set.getAxisDependency());
}
Also used : Entry(com.github.mikephil.charting.data.Entry) IPieDataSet(com.github.mikephil.charting.interfaces.datasets.IPieDataSet)

Example 22 with Entry

use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.

the class FileUtils method loadEntriesFromFile.

/**
     * Loads a an Array of Entries from a textfile from the sd-card.
     * 
     * @param path the name of the file on the sd-card (+ path if needed)
     * @return
     */
public static List<Entry> loadEntriesFromFile(String path) {
    File sdcard = Environment.getExternalStorageDirectory();
    // Get the text file
    File file = new File(sdcard, path);
    List<Entry> entries = new ArrayList<Entry>();
    try {
        @SuppressWarnings("resource") BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            String[] split = line.split("#");
            if (split.length <= 2) {
                entries.add(new Entry(Float.parseFloat(split[0]), Integer.parseInt(split[1])));
            } else {
                float[] vals = new float[split.length - 1];
                for (int i = 0; i < vals.length; i++) {
                    vals[i] = Float.parseFloat(split[i]);
                }
                entries.add(new BarEntry(Integer.parseInt(split[split.length - 1]), vals));
            }
        }
    } catch (IOException e) {
        Log.e(LOG, e.toString());
    }
    return entries;
// File sdcard = Environment.getExternalStorageDirectory();
//
// // Get the text file
// File file = new File(sdcard, path);
//
// List<Entry> entries = new ArrayList<Entry>();
// String label = "";
//
// try {
// @SuppressWarnings("resource")
// BufferedReader br = new BufferedReader(new FileReader(file));
// String line = br.readLine();
//
// // firstline is the label
// label = line;
//
// while ((line = br.readLine()) != null) {
// String[] split = line.split("#");
// entries.add(new Entry(Float.parseFloat(split[0]),
// Integer.parseInt(split[1])));
// }
// } catch (IOException e) {
// Log.e(LOG, e.toString());
// }
//
// DataSet ds = new DataSet(entries, label);
// return ds;
}
Also used : ArrayList(java.util.ArrayList) IOException(java.io.IOException) BarEntry(com.github.mikephil.charting.data.BarEntry) Entry(com.github.mikephil.charting.data.Entry) BarEntry(com.github.mikephil.charting.data.BarEntry) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) File(java.io.File)

Example 23 with Entry

use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.

the class FileUtils method saveToSdCard.

/**
     * Saves an Array of Entries to the specified location on the sdcard
     * 
     * @param entries
     * @param path
     */
public static void saveToSdCard(List<Entry> entries, String path) {
    File sdcard = Environment.getExternalStorageDirectory();
    File saved = new File(sdcard, path);
    if (!saved.exists()) {
        try {
            saved.createNewFile();
        } catch (IOException e) {
            Log.e(LOG, e.toString());
        }
    }
    try {
        // BufferedWriter for performance, true to set append to file flag
        BufferedWriter buf = new BufferedWriter(new FileWriter(saved, true));
        for (Entry e : entries) {
            buf.append(e.getY() + "#" + e.getX());
            buf.newLine();
        }
        buf.close();
    } catch (IOException e) {
        Log.e(LOG, e.toString());
    }
}
Also used : Entry(com.github.mikephil.charting.data.Entry) BarEntry(com.github.mikephil.charting.data.BarEntry) FileWriter(java.io.FileWriter) IOException(java.io.IOException) File(java.io.File) BufferedWriter(java.io.BufferedWriter)

Example 24 with Entry

use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.

the class ChartDataTest method testDynamicChartData.

@Test
public void testDynamicChartData() {
    List<Entry> entries1 = new ArrayList<Entry>();
    entries1.add(new Entry(10, 10));
    entries1.add(new Entry(15, -2));
    entries1.add(new Entry(21, 50));
    ScatterDataSet set1 = new ScatterDataSet(entries1, "");
    List<Entry> entries2 = new ArrayList<Entry>();
    entries2.add(new Entry(-1, 10));
    entries2.add(new Entry(10, 2));
    entries2.add(new Entry(20, 5));
    ScatterDataSet set2 = new ScatterDataSet(entries2, "");
    ScatterData data = new ScatterData(set1, set2);
    assertEquals(-2, data.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(50f, data.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(6, data.getEntryCount());
    assertEquals(-1f, data.getXMin(), 0.01f);
    assertEquals(21f, data.getXMax(), 0.01f);
    assertEquals(-2f, data.getYMin(), 0.01f);
    assertEquals(50f, data.getYMax(), 0.01f);
    assertEquals(3, data.getMaxEntryCountSet().getEntryCount());
    // now add and remove values
    data.addEntry(new Entry(-10, -10), 0);
    assertEquals(set1, data.getMaxEntryCountSet());
    assertEquals(4, data.getMaxEntryCountSet().getEntryCount());
    assertEquals(-10f, data.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(50f, data.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-10f, data.getXMin(), 0.01f);
    assertEquals(21f, data.getXMax(), 0.01f);
    assertEquals(-10f, data.getYMin(), 0.01f);
    assertEquals(50f, data.getYMax(), 0.01f);
    data.addEntry(new Entry(-100, 100), 0);
    data.addEntry(new Entry(0, -100), 0);
    assertEquals(-100f, data.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(100f, data.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    // right axis will adapt left axis values if no right axis values are present
    assertEquals(-100, data.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(100f, data.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    List<Entry> entries3 = new ArrayList<Entry>();
    entries3.add(new Entry(0, 200));
    entries3.add(new Entry(0, -50));
    ScatterDataSet set3 = new ScatterDataSet(entries3, "");
    set3.setAxisDependency(YAxis.AxisDependency.RIGHT);
    data.addDataSet(set3);
    assertEquals(3, data.getDataSetCount());
    assertEquals(-100f, data.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(100f, data.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-50f, data.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(200f, data.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    LineData lineData = new LineData();
    assertEquals(Float.MAX_VALUE, lineData.getYMin(), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(), 0.01f);
    assertEquals(Float.MAX_VALUE, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(Float.MAX_VALUE, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(0, lineData.getDataSetCount());
    List<Entry> lineEntries1 = new ArrayList<Entry>();
    lineEntries1.add(new Entry(10, 90));
    lineEntries1.add(new Entry(1000, 1000));
    LineDataSet lineSet1 = new LineDataSet(lineEntries1, "");
    lineData.addDataSet(lineSet1);
    assertEquals(1, lineData.getDataSetCount());
    assertEquals(2, lineSet1.getEntryCount());
    assertEquals(2, lineData.getEntryCount());
    assertEquals(10, lineData.getXMin(), 0.01f);
    assertEquals(1000f, lineData.getXMax(), 0.01f);
    assertEquals(90, lineData.getYMin(), 0.01f);
    assertEquals(1000, lineData.getYMax(), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(1000f, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(1000, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    List<Entry> lineEntries2 = new ArrayList<Entry>();
    lineEntries2.add(new Entry(-1000, 2000));
    lineEntries2.add(new Entry(2000, -3000));
    Entry e = new Entry(-1000, 2500);
    lineEntries2.add(e);
    LineDataSet lineSet2 = new LineDataSet(lineEntries2, "");
    lineSet2.setAxisDependency(YAxis.AxisDependency.RIGHT);
    lineData.addDataSet(lineSet2);
    assertEquals(2, lineData.getDataSetCount());
    assertEquals(3, lineSet2.getEntryCount());
    assertEquals(5, lineData.getEntryCount());
    assertEquals(-1000, lineData.getXMin(), 0.01f);
    assertEquals(2000, lineData.getXMax(), 0.01f);
    assertEquals(-3000, lineData.getYMin(), 0.01f);
    assertEquals(2500, lineData.getYMax(), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(1000f, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-3000, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(2500, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    assertTrue(lineData.removeEntry(e, 1));
    assertEquals(-1000, lineData.getXMin(), 0.01f);
    assertEquals(2000, lineData.getXMax(), 0.01f);
    assertEquals(-3000, lineData.getYMin(), 0.01f);
    assertEquals(2000, lineData.getYMax(), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(1000f, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-3000, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(2000, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(2, lineData.getDataSetCount());
    assertTrue(lineData.removeDataSet(lineSet2));
    assertEquals(1, lineData.getDataSetCount());
    assertEquals(10, lineData.getXMin(), 0.01f);
    assertEquals(1000, lineData.getXMax(), 0.01f);
    assertEquals(90, lineData.getYMin(), 0.01f);
    assertEquals(1000, lineData.getYMax(), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(1000f, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(90, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(1000, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    assertTrue(lineData.removeDataSet(lineSet1));
    assertEquals(0, lineData.getDataSetCount());
    assertEquals(Float.MAX_VALUE, lineData.getXMin(), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getXMax(), 0.01f);
    assertEquals(Float.MAX_VALUE, lineData.getYMin(), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(), 0.01f);
    assertEquals(Float.MAX_VALUE, lineData.getYMin(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(YAxis.AxisDependency.LEFT), 0.01f);
    assertEquals(Float.MAX_VALUE, lineData.getYMin(YAxis.AxisDependency.RIGHT), 0.01f);
    assertEquals(-Float.MAX_VALUE, lineData.getYMax(YAxis.AxisDependency.RIGHT), 0.01f);
    assertFalse(lineData.removeDataSet(lineSet1));
    assertFalse(lineData.removeDataSet(lineSet2));
}
Also used : Entry(com.github.mikephil.charting.data.Entry) LineData(com.github.mikephil.charting.data.LineData) LineDataSet(com.github.mikephil.charting.data.LineDataSet) ScatterDataSet(com.github.mikephil.charting.data.ScatterDataSet) ArrayList(java.util.ArrayList) ScatterData(com.github.mikephil.charting.data.ScatterData) Test(org.junit.Test)

Example 25 with Entry

use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.

the class DataSetTest method testAddRemoveEntry.

@Test
public void testAddRemoveEntry() {
    List<Entry> entries = new ArrayList<Entry>();
    entries.add(new Entry(10, 10));
    entries.add(new Entry(15, 2));
    entries.add(new Entry(21, 5));
    ScatterDataSet set = new ScatterDataSet(entries, "");
    assertEquals(3, set.getEntryCount());
    set.addEntryOrdered(new Entry(5, 1));
    assertEquals(4, set.getEntryCount());
    assertEquals(5, set.getXMin(), 0.01f);
    assertEquals(21, set.getXMax(), 0.01f);
    assertEquals(1f, set.getYMin(), 0.01f);
    assertEquals(10f, set.getYMax(), 0.01f);
    assertEquals(5, set.getEntryForIndex(0).getX(), 0.01f);
    assertEquals(1, set.getEntryForIndex(0).getY(), 0.01f);
    set.addEntryOrdered(new Entry(20, 50));
    assertEquals(5, set.getEntryCount());
    assertEquals(20, set.getEntryForIndex(3).getX(), 0.01f);
    assertEquals(50, set.getEntryForIndex(3).getY(), 0.01f);
    assertTrue(set.removeEntry(3));
    assertEquals(4, set.getEntryCount());
    assertEquals(21, set.getEntryForIndex(3).getX(), 0.01f);
    assertEquals(5, set.getEntryForIndex(3).getY(), 0.01f);
    assertEquals(5, set.getEntryForIndex(0).getX(), 0.01f);
    assertEquals(1, set.getEntryForIndex(0).getY(), 0.01f);
    assertTrue(set.removeFirst());
    assertEquals(3, set.getEntryCount());
    assertEquals(10, set.getEntryForIndex(0).getX(), 0.01f);
    assertEquals(10, set.getEntryForIndex(0).getY(), 0.01f);
    set.addEntryOrdered(new Entry(15, 3));
    assertEquals(4, set.getEntryCount());
    assertEquals(15, set.getEntryForIndex(1).getX(), 0.01f);
    assertEquals(3, set.getEntryForIndex(1).getY(), 0.01f);
    assertEquals(21, set.getEntryForIndex(3).getX(), 0.01f);
    assertEquals(5, set.getEntryForIndex(3).getY(), 0.01f);
    assertTrue(set.removeLast());
    assertEquals(3, set.getEntryCount());
    assertEquals(15, set.getEntryForIndex(2).getX(), 0.01f);
    assertEquals(2, set.getEntryForIndex(2).getY(), 0.01f);
    assertTrue(set.removeLast());
    assertEquals(2, set.getEntryCount());
    assertTrue(set.removeLast());
    assertEquals(1, set.getEntryCount());
    assertEquals(10, set.getEntryForIndex(0).getX(), 0.01f);
    assertEquals(10, set.getEntryForIndex(0).getY(), 0.01f);
    assertTrue(set.removeLast());
    assertEquals(0, set.getEntryCount());
    assertFalse(set.removeLast());
    assertFalse(set.removeFirst());
}
Also used : Entry(com.github.mikephil.charting.data.Entry) ScatterDataSet(com.github.mikephil.charting.data.ScatterDataSet) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

Entry (com.github.mikephil.charting.data.Entry)82 ArrayList (java.util.ArrayList)33 Paint (android.graphics.Paint)26 LineData (com.github.mikephil.charting.data.LineData)19 LineDataSet (com.github.mikephil.charting.data.LineDataSet)18 ILineDataSet (com.github.mikephil.charting.interfaces.datasets.ILineDataSet)16 BarEntry (com.github.mikephil.charting.data.BarEntry)13 ScatterDataSet (com.github.mikephil.charting.data.ScatterDataSet)10 Path (android.graphics.Path)7 PieEntry (com.github.mikephil.charting.data.PieEntry)7 IOException (java.io.IOException)6 PointF (android.graphics.PointF)5 CandleEntry (com.github.mikephil.charting.data.CandleEntry)5 PieDataSet (com.github.mikephil.charting.data.PieDataSet)5 ScatterData (com.github.mikephil.charting.data.ScatterData)5 Highlight (com.github.mikephil.charting.highlight.Highlight)5 Transformer (com.github.mikephil.charting.utils.Transformer)5 Test (org.junit.Test)5 MPPointF (com.github.mikephil.charting.utils.MPPointF)4 SuppressLint (android.annotation.SuppressLint)3