Android - MPAndroidChart - наложение 3 тактов
Этот вопрос был задан здесь, но до сих пор не получил ответа...
Используя пример StackedBarActivity из библиотеки MPAndroidChart, чтобы нарисовать 3 полосы слияния, и установив значения как [1,2,3]... диаграмма показана с суммой всех чисел, 1+2+3=6... но что Я хочу, чтобы объединить все значения, чтобы значение 2 наложение значения 3 и значение 1 наложение значения 2, как показано на изображении ниже:
По сути, я хочу использовать действие StackedBarActivity, но не складывать все столбцы, вместо этого я хочу поставить один за другим. Визуально я знаю, что могу вычесть большее значение из меньшего, составив сумму до 3 (1+1+1), но тогда значение 3 сохранит значение 1, а не значение 3.
Есть ли способ, которым я могу сделать это с помощью этого класса? Есть ли лучший класс для этого?
2 ответа
Я знаю, что опоздал с ответом на 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);