Линейный график MPAndroidChart удаляет только верхнюю границу Android

Я использую MPAndroidChart для линейного графика. У меня где-то 5 баллов. Ниже мой код.

 LineChart lineChart = (LineChart) findViewById(R.id.chart);
    lineChart.setDrawBorders(true);
    lineChart.getDescription().setEnabled(false);
    lineChart.fitScreen();
    lineChart.setPadding(0,0,0,0);
    lineChart.getLegend().setEnabled(false);
    lineChart.setDoubleTapToZoomEnabled(false);

    lineChart.getAxisLeft().setEnabled(false);
    lineChart.getAxisRight().setEnabled(true);
    lineChart.getAxisLeft().setStartAtZero(true);

    lineChart.getAxisRight().setDrawAxisLine(true);
    lineChart.getAxisRight().setDrawLabels(true);
    lineChart.getAxisRight().setDrawGridLines(false);

    lineChart.getXAxis().setEnabled(true);
    lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);

    lineChart.getXAxis().setDrawAxisLine(true);
    lineChart.getXAxis().setDrawGridLines(true);
    lineChart.setScaleMinima(3f, 0f);
    lineChart.setBackgroundColor(Color.TRANSPARENT); //set whatever color you prefer
    lineChart.setDrawGridBackground(false);
    lineChart.setTouchEnabled(true);
    lineChart.setDragEnabled(true);
    lineChart.setScaleEnabled(true);
    lineChart.setPinchZoom(false);
    Legend l = lineChart.getLegend();
    l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
    l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
    l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
    l.setDrawInside(true);
    ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();

    ArrayList<Entry> values = new ArrayList<Entry>();
    values.add(new Entry(Float.parseFloat("1"), 5));
    values.add(new Entry(Float.parseFloat("2"), 2));
    values.add(new Entry(Float.parseFloat("3"), 6));
    values.add(new Entry(Float.parseFloat("4"), 8));
    values.add(new Entry(Float.parseFloat("5"), 2));

    LineDataSet d = new LineDataSet(values, "Actual kWh ");
    d.setMode(LineDataSet.Mode.CUBIC_BEZIER);
    d.setLineWidth(2.5f);
    d.setCircleRadius(3f);
    d.setCircleColorHole(Color.BLACK);
    d.setValueTextSize(10f);
    d.setValueTextColor(Color.WHITE);
    dataSets.add(d);
    LineData data = new LineData(dataSets);
    lineChart.setData(data);
    lineChart.invalidate();

Я могу сделать большую часть настройки. Мой вопрос: как удалить только верхнюю границу? Также по оси X я получаю десятичные значения, такие как 1, 1,2, 1,3, и так далее. Я хочу, чтобы ось X имела такие значения, как 1, 2, 3, 4, 5. Как я могу это сделать? введите здесь описание изображения


person madhuri H R    schedule 06.12.2017    source источник


Ответы (2)


 LineChart lineChart = (LineChart) findViewById(R.id.chart);
        lineChart.setDrawBorders(false);
        lineChart.getDescription().setEnabled(false);
        lineChart.fitScreen();
        lineChart.setPadding(0, 0, 0, 0);
        lineChart.getLegend().setEnabled(false);
        lineChart.setDoubleTapToZoomEnabled(false);

        lineChart.getAxisLeft().setEnabled(true);
        lineChart.getAxisRight().setEnabled(true);
        lineChart.getAxisLeft().setStartAtZero(false);

        lineChart.getAxisRight().setDrawAxisLine(true);
        lineChart.getAxisRight().setDrawLabels(true);
        lineChart.getAxisRight().setDrawGridLines(false);

        lineChart.getXAxis().setEnabled(true);
        lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);

        XAxis xLabels = lineChart.getXAxis();
        xLabels.setGranularity(1f);

        lineChart.getXAxis().setDrawAxisLine(true);
        lineChart.getXAxis().setDrawGridLines(true);
        lineChart.setScaleMinima(3f, 0f);
        lineChart.setBackgroundColor(Color.TRANSPARENT); //set whatever color you prefer
        lineChart.setDrawGridBackground(false);
        lineChart.setTouchEnabled(false);
        lineChart.setDragEnabled(false);
        lineChart.setScaleEnabled(false);
        lineChart.setPinchZoom(false);
        Legend l = lineChart.getLegend();
        l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(true);
        ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();

        ArrayList<Entry> values = new ArrayList<Entry>();
        values.add(new Entry(Float.parseFloat("1"), 5));
        values.add(new Entry(Float.parseFloat("2"), 2));
        values.add(new Entry(Float.parseFloat("3"), 6));
        values.add(new Entry(Float.parseFloat("4"), 8));
        values.add(new Entry(Float.parseFloat("5"), 2));

        LineDataSet d = new LineDataSet(values, "Actual kWh ");
        d.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        d.setLineWidth(2.5f);
        d.setCircleRadius(3f);
        d.setCircleColorHole(Color.BLACK);
        d.setValueTextSize(10f);
        d.setValueTextColor(Color.WHITE);
        dataSets.add(d);
        LineData data = new LineData(dataSets);
        lineChart.setData(data);
        lineChart.invalidate();

Обновить

 //to hide x-axis line 
 xLabels.setAxisLineColor(Color.TRANSPARENT);
person MinnuKaAnae    schedule 06.12.2017
comment
это сработало для меня. Большое спасибо. Но расстояние между 1 и 2 слишком большое. Как я могу уменьшить это? Также можем ли мы рисовать линии под линейным графиком вместо заливки цветом? - person madhuri H R; 06.12.2017
comment
Я также хочу удалить нижнюю границу. Как я могу это сделать ? - person madhuri H R; 07.12.2017
comment
@madhuri HR добавьте это xLabels.setEnabled(false); - person MinnuKaAnae; 07.12.2017
comment
Я попробовал это. Но он также удалит вертикальные линии и метки. - person madhuri H R; 08.12.2017
comment
@madhuriHR проверьте мой обновленный ответ и проголосуйте, если это поможет - person MinnuKaAnae; 08.12.2017

Попробуй это

Это отображение вертикальных линий

LineChart lineChart = (LineChart) findViewById(R.id.chart1);
    lineChart.setDrawBorders(false);
    lineChart.getDescription().setEnabled(false);
    lineChart.fitScreen();
    lineChart.setPadding(0,0,0,0);
    lineChart.getLegend().setEnabled(false);
    lineChart.setDoubleTapToZoomEnabled(false);

    lineChart.getAxisLeft().setEnabled(true);
    lineChart.getAxisRight().setEnabled(true);
    lineChart.getAxisLeft().setStartAtZero(false);

    lineChart.getAxisRight().setDrawAxisLine(false);
    lineChart.getAxisRight().setDrawLabels(true);
    lineChart.getAxisRight().setDrawGridLines(false);

    lineChart.getXAxis().setEnabled(true);
    lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    lineChart.getAxisLeft().setDrawGridLines(false);
    lineChart.getAxisRight().setDrawGridLines(false);
    lineChart.getXAxis().setDrawAxisLine(true);
    lineChart.getXAxis().setDrawGridLines(true);
    lineChart.setScaleMinima(3f, 0f);
    lineChart.setBackgroundColor(Color.TRANSPARENT); //set whatever color you prefer
    lineChart.setDrawGridBackground(false);
    lineChart.setTouchEnabled(false);
    lineChart.setDragEnabled(false);
    lineChart.setScaleEnabled(false);
    lineChart.setPinchZoom(false);
    Legend l = lineChart.getLegend();
    l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
    l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
    l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
    l.setDrawInside(true);
    ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();

    ArrayList<Entry> values = new ArrayList<Entry>();
    values.add(new Entry(Float.parseFloat("1"), 5));
    values.add(new Entry(Float.parseFloat("2"), 2));
    values.add(new Entry(Float.parseFloat("3"), 6));
    values.add(new Entry(Float.parseFloat("4"), 8));
    values.add(new Entry(Float.parseFloat("5"), 2));

    LineDataSet d = new LineDataSet(values, "Actual kWh ");
    d.setMode(LineDataSet.Mode.CUBIC_BEZIER);
    d.setLineWidth(2.5f);
    d.setCircleRadius(3f);
    d.setCircleColorHole(Color.BLACK);
    d.setValueTextSize(10f);
    d.setValueTextColor(Color.WHITE);
    dataSets.add(d);
    LineData data = new LineData(dataSets);
    lineChart.setData(data);
    lineChart.invalidate();

Если вам не нужны линии сетки

использовать

lineChart.getAxisLeft().setDrawGridLines(false);
        lineChart.getAxisRight().setDrawGridLines(false);
        lineChart.getXAxis().setDrawAxisLine(true);
        lineChart.getXAxis().setDrawGridLines(true);
person Vinesh Chauhan    schedule 06.12.2017
comment
Но это дает горизонтальные линии. - person madhuri H R; 06.12.2017
comment
так что вам нужна только вертикальная линия, хорошо? - person Vinesh Chauhan; 06.12.2017
comment
Мне нужна только левая граница, правая граница и нижняя граница. - person madhuri H R; 06.12.2017