Изменение цвета кривых диаграммы радара на основе значений Yaxis в MPAndroidChart - PullRequest
0 голосов
/ 17 января 2019

Я создал класс CustomRadarDataSet, как показано ниже, чтобы добиться этого, но он просто не работает. getColor (index) всегда выполняет часть else. Не уверен, почему X-индекс не передается правильно в getColor (index). Я уверен, что у меня есть значения, которые меньше, чем maxVal. Тот же подход работает для BarDataSet и LineDataSet, но не для RadarDataSet.

public class CustomRadarDataSet extends RadarDataSet {

public CustomRadarDataSet(List<RadarEntry> yVals, String label) {
    super(yVals, label);
}

private float maxVal = 50;
public float getMaxVal() {
    return maxVal;
}
public void setMaxVal(float val) {
    this.maxVal = val;
}

@Override
public int getColor(int index) {
    if(getEntryForIndex(index).getY() < maxVal) 
        return mColors.get(0);
    else 
        return mColors.get(2);
}
}

Вот как я использовал CustomRadarDataSet.

    ArrayList<IRadarDataSet> dataSets = new ArrayList<IRadarDataSet>();
    CustomRadarDataSet set = new CustomRadarDataSet(readings, "");
    set.setColors(new int[]{
                    Color.rgb(250,55,0), 
                    Color.rgb(0,0,255), 
                    Color.rgb(0,0,0)
                    });
    set.setMaxVal(maxReading); // get this value dynamically
    set.setHighlightEnabled(true);
    set.setDrawHighlightIndicators(true); 

    dataSets.add(set);
    RadarData data = new RadarData(dataSets);

    data.setValueTextSize(8f);
    data.setDrawValues(false);

Редактировать X-индекс верен, и getY () также возвращает ожидаемые показания, сравнение значения y и maxVal оценивается правильно, но каким-то образом соединительная кривая все-таки не подбирает нужный цвет. Похоже, что это ограничение только радиолокационной карты.

...