Я пытаюсь построить цены на акции, используя библиотеку GraphView в течение нескольких дней с днями на оси X. Я могу понять, как использовать даты на оси X путем переопределения метки формата. Но я сталкиваюсь с проблемой, когда график показывает разрывы, когда нет значения по оси Y. Например: я получаю данные о ценах на акции каждые 5 минут в течение 5 дней и хочу, чтобы метки оси X отображались для каждого дня (в формате "dd"), а график должен включать только данные о рабочих часах рынка. Но график, похоже, включает даже данные после закрытия рынка, что приводит к разрывам, таким как график ниже.
Кроме того, я хочу показывать метки оси X только для каждого начала дня, а не любые случайные значения, которые выбираются GraphView (ожидаемый график включен).
Еще одна проблема, которую я заметил, заключается в том, что даже если установить количество горизонтальных меток, используя graph.getGridLabelRenderer().setNumHorizontalLabels(5)
это не работает. Я до сих пор вижу только 2 ярлыка. Я даже пытался установить HumanRounding в false. Это делает его еще хуже, поскольку он отображает все значения, а метки оси X перекрываются и не видны
SimpleDateFormat sdf_1w = new SimpleDateFormat("dd");
//Here is the override for formatLabel() to display X-axis in Date format
graph.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter()
{
@Override
public String formatLabel (double value, boolean isValueX) {
if (isValueX) {
return sdf_1w.format(new Date((long) value));
} else {
return super.formatLabel(value, isValueX);
}
}
});
graph.getGridLabelRenderer().setNumHorizontalLabels(5);
graph.getGridLabelRenderer().setNumVerticalLabels(5);
graph.getGridLabelRenderer().setHumanRounding(false);
Вот график, который я получаю (с HumanRounding = false):
Это ожидаемый участок: