MPAndroidChart折线图的底部有空格,不能以0开头

时间:2019-01-23 09:26:28

标签: android mpandroidchart

在我的应用程序中,我正在使用 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"
}

1 个答案:

答案 0 :(得分:0)

我通过设置左右两个轴的最小值来解决。

科特琳代码:

barChart.axisLeft.axisMinimum = 0f
barChart.axisRight.axisMinimum = 0f