MPAndroidChart Сделать 0-100 процентов StackBarGraph со значениями, скорректированными в стеке - PullRequest
0 голосов
/ 08 июня 2018

Требуемый выход StackBar: Desired StackBar Output

Это то, чего я хочу достичь, автоматически настраивая значения в диапазоне 0-100 процентов

Текущий Stackbar

Current Stackbar

Stackbar пересекает диапазон 100% и значения не регулируются

leftAxis.setAxisMinimum(0f);

leftAxis.setAxisMaximum(100f);

Эти 2 свойства позволяют мне установить диапазон по оси 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 голосов
/ 09 июня 2018

Я нашел обходной путь для этого

        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));
...