首页 > 解决方案 > 具有单一数据输入的 MPAndroid 折线图

问题描述

我正在使用 MPAndroidChart-v2.1.6,我面临以下问题。

当我有一个数据条目时,它开始在 X 轴上显示从 0 索引的值。这就是它的样子。在此处输入图像描述

我希望它在中心对齐,当我只有一个数据输入时,像这样.. 在此处输入图像描述

我已经尝试过这种特殊情况setMinimum()setMaximum()财产,但没有任何积极的事情发生在我身上。当我有多个条目时,它运作良好。

这是我的代码,

ArrayList<LineDataSet> lines = new ArrayList<>();
        LineDataSet linedataset1 = new LineDataSet(group1, "Text1");
        linedataset1.setDrawFilled(false);
        linedataset1.setValueFormatter(new MyDataSetFormatter());
        linedataset1.setFillAlpha(110);
        linedataset1.setLineWidth(1f);
        linedataset1.setColor(Color.rgb(67, 91, 153));
        linedataset1.setCircleColor(Color.rgb(67, 91, 153));
        LineDataSet linedataset2 = new LineDataSet(group2, "Text2");
        linedataset2.setDrawFilled(false);
        linedataset2.setValueFormatter(new MyDataSetFormatter());
        linedataset2.setFillAlpha(110);
        linedataset2.setLineWidth(1f);
        linedataset2.setColor(Color.rgb(254, 252, 59));
        linedataset2.setCircleColor(Color.rgb(254, 252, 59));
        LineDataSet linedataset3 = new LineDataSet(group3, "Text3");
        linedataset3.setDrawFilled(false);
        linedataset3.setValueFormatter(new MyDataSetFormatter());
        linedataset3.setFillAlpha(110);
        linedataset3.setLineWidth(1f);
        linedataset3.setColor(Color.rgb(68, 185, 102));
        linedataset3.setCircleColor(Color.rgb(68, 185, 102));
        LineDataSet linedataset4 = new LineDataSet(group4, "text4");
        linedataset4.setDrawFilled(false);
        linedataset4.setValueFormatter(new MyDataSetFormatter());
        linedataset4.setFillAlpha(110);
        linedataset4.setLineWidth(1f);
        linedataset4.setColor(Color.rgb(145, 92, 96));
        linedataset4.setCircleColor(Color.rgb(145, 92, 96));
        lines.add(linedataset1);
        lines.add(linedataset2);
        lines.add(linedataset3);
        lines.add(linedataset4);
        leftYAxis = lineChart.getAxisLeft();
        rightYAxis = lineChart.getAxisRight();
        rightYAxis.setDrawLabels(false);
        rightYAxis.setAxisMaxValue(105);
        leftYAxis.setAxisMaxValue(105);

        lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
        lineChart.getXAxis().setLabelRotationAngle(-70);

        lineChart.getXAxis().setDrawGridLines(false);
        lineChart.getAxisLeft().setDrawGridLines(false);
        lineChart.getAxisRight().setDrawGridLines(false);
        lineChart.getAxisRight().setEnabled(false);
        lineChart.setBackgroundColor(Color.WHITE);
        lineChart.setDrawGridBackground(false);

        lineChart.setData(new LineData(newLabels, lines));
        lineChart.setPinchZoom(false);
        lineChart.animateY(1000);
        lineChart.setDescription(null);

        XAxis xAxis = lineChart.getXAxis();
        xAxis.setAvoidFirstLastClipping(true);

        //lineChart.setBackgroundColor(Color.rgb(255, 255, 255));
        lineChart.setTouchEnabled(false);
        lineChart.invalidate();

提前致谢,

标签: androidmpandroidchartlinechart

解决方案


要将 X 轴限制设置为特定值,您可以调用setAxisMinimumsetAxisMaximum。例如:

XAxis xAxis = lineChart.getXAxis();
xAxis.setAxisMinimum(10);
xAxis.setAxisMaximum(30);

如果您想使用您的自动执行此操作,LineDataSet您可以查询 X 数据的最小值和最大值

float xMin = dataSet.getXMin() - 5;
float xMax = dataSet.getXMax() + 5;
xAxis.setAxisMinimum(xMin);
xAxis.setAxisMaximum(xMax);

即使只有一个点,它也会使数据居中。


推荐阅读