GraphView X-оси только для существующих значений - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь построить цены на акции, используя библиотеку 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):

Это ожидаемый участок: enter image description here

...