2015-03-12 3 views
1

Я использую диаграмму MPAndroid, чтобы построить кубический график, используя несколько точек. В настоящее время библиотека соединяет эти точки и графики с плавным графиком. код я использую:MPAndroid Chart как получить список всех точек на Cubic LineChart

ArrayList<String> xVals = new ArrayList<String>(); 
for (int i = 0; i < count; i++) { 
    xVals.add((1990 +i) + ""); 
} 

ArrayList<Entry> vals1 = new ArrayList<Entry>(); 

for (int i = 0; i < count; i++) { 
    float mult = (range + 1); 
    float val = (float) (Math.random() * mult) + 20;// + (float) 
                // ((mult * 
                // 0.1)/10); 
    vals1.add(new Entry(val, i)); 
} 

// create a dataset and give it a type 
LineDataSet set1 = new LineDataSet(vals1, "DataSet 1"); 
    set1.setDrawCubic(true); 
LineData data = new LineData(xVals, set1); 

Я хотел бы получить список всех промежуточных точек, библиотечные участки между теми данными мною для того, чтобы получить гладкую кривую в массиве. Есть ли способ достичь этого?

Благодаря

ответ

1

В классе LineChartRenderer.java, drawCubic() называется. В этой функции внизу, когда она отображает путь, вы можете найти все точки, которые используются при построении гладкой кривой. Смотрите, помогает ли это вам.

+0

Да я видел это, но я не понимаю, как извлечь коллекцию всех точек из этой функции. Не могли бы вы предоставить некоторый код, чтобы объяснить, как это сделать, если это возможно? –

+0

У вас есть объект пути с именем spline. Извлечение всех точек - ничто, потому что Путь содержит бесконечное количество точек, но да, вы можете использовать этот объект пути для извлечения как можно большего количества точек на пути, задавая равные интервалы по пути. Для нахождения точек следуйте @hasanghaforian ответу по ссылке ниже , http://stackoverflow.com/questions/7972780/how-do-i-find-all-the-points-in-a-path-in-android –

0

Для режима набора данных Curve (Smooth edge line) CUBIC_BEZIER.

LineDataSet lds=new LineDataSet(water_entryline,"Levels"); 
    lds.setMode(LineDataSet.Mode.CUBIC_BEZIER); 
    LineData ld=new LineData(); 
    ld.addDataSet(lds); 
    linechart.setData(ld); 
    linechart.animateY(1000, Easing.EasingOption.Linear); 
    linechart.invalidate(); 

Для gettting значения из Linechart

linechart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { 
     @Override 
     public void onValueSelected(Entry e, Highlight h) { 
      Log.d("value","X: "+e.getX()+" Y: "+e.getY()); 
     } 

     @Override 
     public void onNothingSelected() { 

     } 
    }); 
Смежные вопросы