use of com.github.mikephil.charting.data.Entry in project MPAndroidChart by PhilJay.
the class HorizontalBarHighlighter method buildHighlights.
@Override
protected List<Highlight> buildHighlights(IDataSet set, int dataSetIndex, float xVal, DataSet.Rounding rounding) {
ArrayList<Highlight> highlights = new ArrayList<>();
//noinspection unchecked
List<Entry> entries = set.getEntriesForXValue(xVal);
if (entries.size() == 0) {
// Try to find closest x-value and take all entries for that x-value
final Entry closest = set.getEntryForXValue(xVal, Float.NaN, rounding);
if (closest != null) {
//noinspection unchecked
entries = set.getEntriesForXValue(closest.getX());
}
}
if (entries.size() == 0)
return highlights;
for (Entry e : entries) {
MPPointD pixels = mChart.getTransformer(set.getAxisDependency()).getPixelForValues(e.getY(), e.getX());
highlights.add(new Highlight(e.getX(), e.getY(), (float) pixels.x, (float) pixels.y, dataSetIndex, set.getAxisDependency()));
}
return highlights;
}
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());
}
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;
}
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());
}
}
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));
}
Aggregations