Я использую библиотеку GraphView из github, просто названную Graphview.
У меня есть даты по оси x и вес в кг по оси y. График построен фрагментарно. Вы можете добавить новые графики в графическое представление, введя имя графика в текстовом представлении автозаполнения:
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getActivity());
DateAsXAxisLabelFormatter dateAsXAxisLabelFormatter = new
DateAsXAxisLabelFormatter(getActivity(), DateFormat.getDateInstance());
graphView.getGridLabelRenderer().setLabelFormatter(dateAsXAxisLabelFormatter);
graphView.getGridLabelRenderer().setNumHorizontalLabels(3);// only 4 because of the space
graphView.getGridLabelRenderer().setHumanRounding(false);
graphView.getViewport().setXAxisBoundsManual(true);
graphView.getViewport().setYAxisBoundsManual(false);
String[] names= getNames();
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_dropdown_item_1line, names);
addGraphValue.setAdapter(adapter);
addGraphValue.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH){
addToGraph(addGraphValue.getText().toString());
}
return true;
}
});
addToGraph выполняет функцию, в которой значение y находится на основе некоторых критериев, касающихся текста в autoCompleteTextview addGraphValue. Когда это значение найдено, оно добавляется в lineGraphSeries вместе с соответствующей датой. После того, как это произошло столько раз, сколько нужно, на график добавляется ряд:
for(/*not important*/){
//Finding the y-value
dataPoint = new DataPoint(date, y);
mLineGraphSeries.appendData(dataPoint, false, 100);
}
mLineGraphSeries.setColor(mColors[position]);
graphView.addSeries(mLineGraphSeries);
mLineGraphSeries.setDrawDataPoints(true);
Итак, вот проблема: когда добавляется первое значение, ось Y сходит с ума и добавляет много значений: Картина происходящего
Теперь, если я включу округление вручную, значения y будут фиксированными, но даты будут отображаться странно: Picture из этого
Если я перезагружу страницу (сохраню линейку графиков, перезагружу фрагмент и снова добавлю его), проблема исчезнет. Жизни не могу понять в чем дело, помогите пожалуйста.