1

我正在使用 MPAndroid 图表使用几个点绘制三次图。目前,该库连接这些点并绘制平滑图。我正在使用的代码是:

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);

我想获取库在我给出的中间点之间绘制的所有中间点的列表,以便在数组中获得平滑曲线。有没有办法做到这一点?

谢谢

4

2 回答 2

1

在 LineChartRenderer.java 类中,调用了 drawCubic()。在底部的那个函数中,当它渲染路径时,您可以找到用于绘制平滑曲线的所有点。看看对你有没有帮助。

于 2015-03-12T07:21:27.443 回答
0

对于曲线(平滑边缘线)数据集模式为 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();

从折线图中获取值

 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() {

        }
    });
于 2017-06-10T08:16:47.463 回答