用mpandroid绘制折线图

时间:2016-07-15 06:40:54

标签: android mpandroidchart

任何人都可以使用mpandroid绘制这些数据吗?

for(int i=0;i<5;i++){
            float y=(float)y2[i] ;
            float x=(float)x2[i] ;
            yVals.add(new Entry( x, y));
        }
        LineDataSet sety=new LineDataSet(yVals,"yData");
        LineData data = new LineData(sety);
        lineChart.setData(data);

           XAxis xAxis = lineChart.getXAxis();
           lineChart.getAxisRight().setAxisMaxValue(4500);
           lineChart.getAxisLeft().setAxisMaxValue(4500);
           lineChart.getAxisRight().setAxisMinValue(-20);
           lineChart.getAxisLeft().setAxisMinValue(-20);

           xAxis.setAxisMaxValue(3500);
           xAxis.setAxisMinValue(-20);
           lineChart.animateX(3000);
           lineChart.setDragEnabled(true);
           lineChart.setScaleEnabled(true);

我写了一个代码,在我的Android设备中只绘制了数组的前五个元素! [我的意思是从y2 [0]到y2 [5]和从x2 [0]到x2 [5]) 谁能说我为什么? 这是我的代码:

<customer>
    <name/>
    <phone-number/>
</customer>

您认为我应该缩放它以查看其他数据吗?

1 个答案:

答案 0 :(得分:1)

您只在Entry循环中添加了5个for个对象。显然,您的图表只显示5个条目。

编辑:

    double[] y2 = {4151.07, 3375.21, 3354.56, 3333.87, 3313.15, 3146.99, 123.67, 84.89, 43.9, 0.34, 0.0};
    double[] x2 = {0.0, 1606.64, 1643.04, 1679.05, 1534.98, 1458.7, 1377.66, 1291.13, 1260.91, 1200.2, 547.3};

    ArrayList<Entry> yVals1 = new ArrayList<>();
    for (int i = 0; i < y2.length; i++) {
        yVals1.add(new Entry(i, (float) y2[i]));
    }

    LineDataSet sety = new LineDataSet(yVals1, "Dataset 1");
    sety.setValueFormatter(new LineChartYValueFormatter());
    sety.setColor(ColorTemplate.MATERIAL_COLORS[2]);
    ArrayList<ILineDataSet> dataSets = new ArrayList<>();
    dataSets.add(sety);

    LineData data = new LineData(dataSets);
    lineChart.setData(data);

    XAxis xAxis = lineChart.getXAxis();
    xAxis.setAxisMinValue(0);
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setValueFormatter(new LineChartXAxisValueFormatter(x2));
    xAxis.setLabelCount(10);
    xAxis.setLabelRotationAngle(45);

    lineChart.animateX(3000);
    lineChart.setDragEnabled(true);
    lineChart.setScaleEnabled(true);

    lineChart.highlightValue(null);
    lineChart.invalidate();

LineChartXAxisValueFormatter类

public class LineChartXAxisValueFormatter implements AxisValueFormatter {

    double[] mXLabels;

    public LineChartXAxisValueFormatter(double[] xLabels) {
        mXLabels = xLabels;
    }

    @Override
    public String getFormattedValue(float value, AxisBase axis) {

        int i=(int)value;
        return new DecimalFormat("#0.00").format(mXLabels[i]);
    }

    @Override
    public int getDecimalDigits() {
        return 0;
    }
}

LineChartYValueFormatter类

public class LineChartYValueFormatter implements ValueFormatter {
    public LineChartYValueFormatter() {
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return new DecimalFormat("#0.00").format(value);
    }
}

See the result