Android - MPAndroid图表 - 叠加 3 个柱

Android - MPAndroidChart - Overlay 3 bars

这个问题已经提出here,但仍然没有答案...

使用 StackedBarActivity example from MPAndroidChart 库绘制 3 个合并条,并将值设置为 [1,2,3]...图表显示所有数字的总数,1+2+3 =6.. 但我想要的是合并所有值,以便值 2 覆盖值 3 和值 1 覆盖值 2,如下图所示:

基本上,我想使用 StackedBarActivity activity,但不是堆叠所有的条,相反,我想一个接一个地放置。 从视觉上我知道我可以用较小的值减去较大的值,求和直到达到 3 (1+1+1),但是值 3 将保留值 1 而不是值 3。

有什么方法可以使用这个 class 来实现吗?有没有更好的class来做到这一点?

我知道我已经晚了 6 个月才得到答案,但我认为这是可行的解决方案:

List<String> xVals = getXVals(); //some function to get values
List<BarEntry> yVals = new ArrayList();
int[] barColors = new int[bars.size() * numberOfValues];
int index=0;
for (Bar bar : bars) {
    List<BarEntry> yValsForBar = new ArrayList();
    for (int i=0; i<numberOfValues; i++) {
        yValsForBar.add(new BarEntry(bar.value(i), i));
        barColors[i+index*numberOfValues] = bar.color();
    }
    yVals.addAll(yValsForBar);
    index++;
}
BarDataSet dataSet = new BarDataSet(yVals, "data set");
BarData data = new BarData(xVals);
data.addDataSet(dataSet);

在这里,你应该有不同颜色的重叠条(注意:当然,如果它们的值比下一个大,你可能看不到一些条,如果你不想对它们进行排序,你将不得不做一些对此进行修改)。至少对我有用。

扩展 n4yArh 的回答。

在最新版本的库中,BarEntry 的构造函数已更改为 BarEntry(x,y)。 所以行

yValsForBar.add(new BarEntry(bar.value(i),i));

应该改为

yValsForBar.add(new BarEntry(i,bar.value(i));

当然要使用颜色数组,缺少以下行

dataSet.setColors(barColors);