【问题标题】:MPAndroidChart Make 0-100 percent StackBarGraph with values adjusted in stackbarMPAndroidChart 制作 0-100% 堆叠条形图,并在堆叠条中调整值
【发布时间】:2018-06-08 06:14:50
【问题描述】:

所需的 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);

其余代码

【问题讨论】:

  • 我认为您正在将 BarChart 和 StackBarGraph 混合在一起
  • @VVB 是的,我正在使用 BarDataSet 填充我的堆叠条形图。
  • @VVB 我已经使用相同的链接构建了堆栈..我想要像这个例子中一样的百分比堆积条numetriclabz.com/…

标签: android mpandroidchart


【解决方案1】:

我有一个解决方法

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

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 2023-03-25
    • 2019-03-25
    • 1970-01-01
    • 2014-12-28
    • 2012-05-11
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多