3

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

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

在此处输入图像描述

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

有没有办法使用这个类来做到这一点?有更好的课程来做到这一点吗?

4

2 回答 2

1

我知道我的答案迟到了 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);

在这里,您应该有不同颜色的重叠条(注意:当然,如果某些条的值大于下一个条,您可能看不到它们,如果您不想对它们进行排序,则必须对此进行一些修改)。至少和我一起工作。

于 2016-05-10T13:03:52.127 回答
0

扩展 n4yArh 的答案。

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

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

应该改为

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

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

dataSet.setColors(barColors);
于 2016-09-29T04:09:58.990 回答