MPAndroidChart. Как использовать наборы данных с разными типами данных на одном графике? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь объединить несколько линейных диаграмм в одном представлении, но не могу решить проблему с разными типами данных. Я пытался использовать нормализацию min-max для масштабирования значений из разных наборов данных, но когда я хочу показать выбранное значение в пользовательском представлении маркера, я не могу преобразовать его обратно в исходный формат. Я пытался использовать разные ValueFormatters для всех моих наборов данных, но ничего не достиг.

Код нормализации:

    private List<Entry> normalizeEntry(List<Entry> entries, int min, int max) {
        for (int i = 0; i < entries.size(); i++) {
            float lastValue = entries.get(i).getY();
            float newValue = normalize(lastValue, min, max, 0, 100);
            entries.set(i, new Entry(i, newValue));
        }
        return entries;
    }

Изображение, которое показывает, чего я хочу достичь: enter image description here

1 Ответ

0 голосов
/ 11 февраля 2020

Мне удалось решить мою проблему, добавив параметр, соответствующий значению до нормализации, в конструктор объекта Entry.

before:
new Entry(xValue, normalizedValue);
after:
new Entry(xValue, normalizedValue, initialValueWithOutputFormat);

Пример:

 entries.add(new Entry(i, normalizedValues.get(i), String.format("%.2f m", inputValues.get(i))));

Затем, Я могу легко обновить пользовательский маркер, как показано в следующем коде:

public class CustomMarkerView extends MarkerView {

    private TextView tvContent;

    public CustomMarkerView(Context context, int layoutResource) {
        super(context, layoutResource);
        // this markerview only displays a textview
        tvContent = findViewById(R.id.tvContent);
    }

    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        tvContent.setText(String.valueOf(e.getData()));
        super.refreshContent(e, highlight);
    }

    @Override
    public MPPointF getOffset() {
        return new MPPointF(-(getWidth() / 2), -getHeight());
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...