Линейная диаграмма MPAndroidChart имеет пробел внизу, не начинается с 0 - PullRequest
0 голосов
/ 23 января 2019

в моем приложении я использую MPAndroidChart Библиотека для отображения данных в Линейная диаграмма

когда его данные установлены на графике, в это время появляется некоторое дополнительное пространство в нижней части,

в моих данных минимальное значение равно "0", но на графике, отображаемом между 0-10, не начинается с 0

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

enter image description here

вот мой код

private void DisplayLineChart(TotalSalesLineData data, LineChart chart, boolean b) {

    // background color
    chart.setBackgroundColor(Color.WHITE);


    // disable description text
    chart.getDescription().setEnabled(false);

    // enable touch gestures
    chart.setTouchEnabled(true);

    // set listeners
    chart.setOnChartValueSelectedListener(this);
    chart.setDrawGridBackground(false);

    // create marker to display box when values are selected
    MyMarkerView mv = new MyMarkerView(getActivity(), R.layout.custom_marker_view);

    // Set the marker to the chart
    mv.setChartView(chart);
    chart.setMarker(mv);


    YAxis yAxisRight = chart.getAxisRight();
    yAxisRight.setEnabled(false);

    YAxis leftAxis = chart.getAxisLeft();
    leftAxis.setTextColor(Color.BLACK);
    leftAxis.setAxisMaximum(50f);
    leftAxis.setAxisMinimum(0f);

    leftAxis.setDrawGridLines(true);
    leftAxis.setGranularityEnabled(true);

    //chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    XAxis xAxis = chart.getXAxis();
    xAxis.setDrawGridLinesBehindData(false);
    xAxis.setDrawGridLines(false);
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setAxisMinimum(0f);
    xAxis.setSpaceMin(0f);
    xAxis.setSpaceMax(0f);


    setData(chart, data);

    // draw points over time
    chart.animateX(0);
}

здесь задается метод данных

 private void setData(LineChart chart, TotalSalesLineData range) {

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

    for (int i = 0; i < range.getCurrentYear().size(); i++) {
        //  float val = (float) (Math.random() * (range / 2f)) + 50;
        values1.add(new Entry(i, range.getCurrentYear().get(i)));
    }

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

    for (int i = 0; i < range.getPreviousYear().size(); i++) {
        //  float val = (float) (Math.random() * range) + 450;
        values2.add(new Entry(i, range.getPreviousYear().get(i)));
    }


    LineDataSet set1, set2;

    if (chart.getData() != null && chart.getData().getDataSetCount() > 0) {
        set1 = (LineDataSet) chart.getData().getDataSetByIndex(0);
        set2 = (LineDataSet) chart.getData().getDataSetByIndex(1);

        set1.setValues(values1);
        set2.setValues(values2);

        chart.getData().notifyDataChanged();
        chart.notifyDataSetChanged();
    } else {
        // create a dataset and give it a type

        set1 = new LineDataSet(values1, String.valueOf(Calendar.getInstance().get(Calendar.YEAR)));

        set1.setAxisDependency(YAxis.AxisDependency.RIGHT);
        set1.setColor(ColorTemplate.getHoloBlue());
        set1.setCircleColor(R.color.colorAccent);
        set1.setLineWidth(2f);
        set1.setCircleRadius(3f);
        // set1.setFillAlpha(65);
        set1.setFillColor(ColorTemplate.getHoloBlue());
        //  set1.setHighLightColor(Color.rgb(244, 117, 117));
        set1.setHighLightColor(R.color.colorAccent);
        set1.setDrawCircleHole(false);
        //set1.setFillFormatter(new MyFillFormatter(0f));
        //set1.setDrawHorizontalHighlightIndicator(false);
        //set1.setVisible(false);
        //set1.setCircleHoleColor(Color.WHITE);

        // create a dataset and give it a type
        set2 = new LineDataSet(values2, String.valueOf(CommonMethods.getPreviousYear()));
        set2.setAxisDependency(YAxis.AxisDependency.RIGHT);
        set2.setColor(Color.GRAY);
        set2.setCircleColor(Color.BLACK);
        set2.setLineWidth(2f);
        set2.setCircleRadius(3f);
        //  set2.setFillAlpha(65);
        set2.setFillColor(Color.RED);
        set2.setDrawCircleHole(false);
        set2.setHighLightColor(Color.rgb(244, 117, 117));
        //set2.setFillFormatter(new MyFillFormatter(900f));

        // create a data object with the data sets
        LineData data = new LineData(set1, set2);
        data.setValueTextColor(Color.WHITE);
        data.setValueTextSize(0f);
        // set data
        chart.setData(data);
    }
}

вот мой ответ

{
"error": false,
"data": {
    "currentYear": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
    ],
    "previousYear": [
        0,
        0,
        0,
        0,
        48970,
        0,
        21854.81,
        242827.07,
        29070.48,
        1196,
        3588,
        441.76
    ]
},
"message": "Successfully"
}
...