如何在MPAndroidChart中将条形图移动到图表中心?

时间:2017-12-08 05:27:33

标签: android charts mpandroidchart

我正在使用MPAndroidChart。

这是一个不错的图书馆,但我无法解决问题。

这是结果执行。

enter image description here

轴很好地居中对齐,但是条形组没有居中对齐。

我想将酒吧小组转移到中心位置。

而且,这是完整的代码。

        float barWidth = 0.1f;
        float barSpace = 0f;
        float groupSpace = 0.1f;
        int groupCount = 3;

        distinctionGraph = (BarChart) findViewById(R.id.distinction_graph);
        verificationGraph = (BarChart) findViewById(R.id.verification_graph);
        sentenceGraph = (BarChart) findViewById(R.id.sentence_graph);

        ArrayList xVals = new ArrayList();

        xVals.add("3월");
        xVals.add("2월");
        xVals.add("1월");

        ArrayList yVals1 = new ArrayList();
        ArrayList yVals2 = new ArrayList();
        ArrayList yVals3 = new ArrayList();

        yVals1.add(new BarEntry(1, (float) 1));
        yVals2.add(new BarEntry(1, (float) 2));
        yVals3.add(new BarEntry(1, (float) 2));

        yVals1.add(new BarEntry(2, (float) 3));
        yVals2.add(new BarEntry(2, (float) 4));
        yVals3.add(new BarEntry(2, (float) 4));

        yVals1.add(new BarEntry(3, (float) 5));
        yVals2.add(new BarEntry(3, (float) 6));
        yVals3.add(new BarEntry(3, (float) 6));

        BarDataSet set1, set2, set3;
        set1 = new BarDataSet(yVals1, "쉬움");
        set1.setColor(Color.parseColor("#3EBB9B"));
        set2 = new BarDataSet(yVals2, "보통");
        set2.setColor(Color.parseColor("#3698DB"));
        set3 = new BarDataSet(yVals3, "어려움");
        set3.setColor(Color.parseColor("#2C80B9"));

        BarData data = new BarData(set1, set2, set3);
        data.setValueFormatter(new LargeValueFormatter());

        distinctionGraph.setData(data);
        distinctionGraph.getBarData().setBarWidth(barWidth);
        distinctionGraph.getXAxis().setAxisMinimum(0);
        distinctionGraph.getXAxis().setAxisMaximum(0 + distinctionGraph.getBarData().getGroupWidth(groupSpace, barSpace) * groupCount);
        distinctionGraph.groupBars(0, groupSpace, barSpace);
        distinctionGraph.getData().setHighlightEnabled(false);
        distinctionGraph.invalidate();

        distinctionGraph.setDescription(null);
        distinctionGraph.setPinchZoom(false);
        distinctionGraph.setScaleEnabled(false);
        distinctionGraph.setDrawBarShadow(false);
        distinctionGraph.setDrawGridBackground(false);

        Legend l = distinctionGraph.getLegend();
        l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(true);
        l.setYOffset(20f);
        l.setXOffset(0f);
        l.setYEntrySpace(0f);
        l.setTextSize(8f);

        //X-axis
        XAxis xAxis = distinctionGraph.getXAxis();
        xAxis.setGranularity(1f);
        xAxis.setGranularityEnabled(true);
        xAxis.setCenterAxisLabels(true);
        xAxis.setDrawGridLines(false);
        xAxis.setAxisMaximum(3);
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setValueFormatter(new IndexAxisValueFormatter(xVals));
        //Y-axis
        distinctionGraph.getAxisRight().setEnabled(false);
        YAxis leftAxis = distinctionGraph.getAxisLeft();
        leftAxis.setValueFormatter(new LargeValueFormatter());
        leftAxis.setDrawGridLines(true);
        leftAxis.setSpaceTop(35f);
        leftAxis.setAxisMinimum(0f);

我为groupCount设置了3但没有工作。 我想念一下吗?

例如,像这样。

enter image description here

需要帮助。谢谢:))

2 个答案:

答案 0 :(得分:2)

我解决了。

首先,我改变了如下变量。

    float barWidth = 0.3f;
    float barSpace = 0.0f;
    float groupSpace = 0.06f;
    int groupCount = 3;

点是barWidth。 它改变了0.0f>> 0.3f。

  

0.3 * 3 = 0.9。

它关闭了。

而且,我修改了如下的组合栏。

distinctionGraph.groupBars(groupSpace, groupSpace, barSpace);

groupBar的第一个参数是fromX。 在修改之前,groupSpace为0。

这是我解决的屏幕。

enter image description here

答案 1 :(得分:-1)

也许这可以帮到你:

barChart.setFitBars(true);