首页 > 解决方案 > MPAndroidChart 制作 0-100% StackBarGraph,并在堆栈栏中调整值

问题描述

所需的 StackBar 输出: 所需的 StackBar 输出

这就是我想要在 0-100% 范围内自动调整值来实现的目标

当前堆栈栏

当前堆栈栏

跨越 100 % 范围的堆栈条且未调整值

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

其余代码

标签: androidmpandroidchart

解决方案


我有一个解决方法

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

推荐阅读