MPAndroidChart使用堆栈栏中的值调整0-100%StackBarGraph

时间:2018-06-08 06:14:50

标签: android mpandroidchart

所需的StackBar输出: Desired StackBar Output

这是我希望通过在0-100%范围内自动调整值来实现的目标

当前的Stackbar

Current Stackbar

超过100%范围的Stackbars和值未调整

leftAxis.setAxisMinimum(0f);

leftAxis.setAxisMaximum(100f);

这两个属性允许我在Y轴上设置范围,但它超过100%的阈值

    mChart.getDescription().setEnabled(false);
    mChart.setMaxVisibleValueCount(40);
    mChart.setPinchZoom(false);
    mChart.setDrawGridBackground(false);
    mChart.setDrawBarShadow(false);
    mChart.setDrawValueAboveBar(false);
    mChart.setHighlightFullBarEnabled(false);
    mChart.setDoubleTapToZoomEnabled(false);
    mChart.getAxisRight().setEnabled(false);

    XAxis xAxis = mChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setTypeface(mTfLight);
    xAxis.setDrawGridLines(false);
    xAxis.setGranularity(1f); // only intervals of 1 day
    xAxis.setLabelCount(13);

// xAxis.setValueFormatter(xAxisFormatter);

    IAxisValueFormatter custom = new MyAxisValueFormatter();

    YAxis leftAxis = mChart.getAxisLeft();
    leftAxis.setTypeface(mTfLight);
    leftAxis.setLabelCount(2, false);
    leftAxis.setValueFormatter(custom);
    leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
    leftAxis.setSpaceTop(15f);
    leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
    leftAxis.setAxisMaximum(100f);
    mChart.getAxisRight().setEnabled(false);

其余代码

1 个答案:

答案 0 :(得分:0)

我有一个解决方法

        float rand1 = (float) (Math.random() * mult) + mult / 3;
        float rand2 = (float) (Math.random() * mult) + mult / 3;
        float rand3 = (float) (Math.random() * mult) + mult / 3;


        float AddAllRand = (rand1 + rand2 + rand3);
        float val1 = (100 * rand1) / AddAllRand;
        float val2 = (100 * rand3) / AddAllRand;
        float val3 = (100 * rand2) / AddAllRand;
        yVals1.add(new BarEntry(i, new float[]{val1, val2, val3}, null));