Библиотека Graphview неправильно отображает ось Y, если для округления человека установлено значение false?

Я использую библиотеку GraphView из github, просто названную Graphview.

У меня есть даты по оси x и цены по оси y. Я получаю данные из API, но когда я устанавливаю для человеческого округления значение false, ось Y сходит с ума и добавляет много значений: Картина происходящего.

Теперь, если я включу округление вручную, значения y будут фиксированными, но даты будут отображаться странно: Picture из этого.

Когда переворачиваю устройство то проблем нет, не знаю что не так помогите пожалуйста.

Код:

     @Override
     public void onLoadFinished(Loader<ArrayList<GraphObject>> loader, 
     ArrayList<GraphObject> graphObjects) {

    if (graphObjects != null && !graphObjects.isEmpty()) {
        ArrayList<GraphObject> objects = new ArrayList<>(graphObjects);
        List<DataPoint> list = getDataPoint(graphObjects);
        LineGraphSeries<DataPoint> series = new LineGraphSeries<> 
        (list.toArray(new DataPoint[1]));
        Log.e("Message", objects.get(0).getclose());
        graphView.addSeries(series);

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("LLLyy");
        graphView.getGridLabelRenderer().setLabelFormatter(new 
        DateAsXAxisLabelFormatter(this,simpleDateFormat));
        graphView.getGridLabelRenderer().setNumHorizontalLabels(3);

        graphView.getViewport().setMinX(list.get(0).getX());
        graphView.getViewport().setMaxX(list.get(list.size()-1).getX());
        graphView.getViewport().setXAxisBoundsManual(true);
        graphView.getGridLabelRenderer().setHumanRounding(false);
    }

}

     private List<DataPoint> getDataPoint(ArrayList<GraphObject> graphObjects) {
    List<DataPoint> dataPoints = new ArrayList<>();
    for (GraphObject object : graphObjects) {
        String close_string = object.getclose();
        String string_time = object.getMtime();
        long time = Long.parseLong(string_time);
        time = time * 1000;
        Double close = Double.parseDouble(close_string);
        Date dateObject = new Date(time);
        dataPoints.add(new DataPoint(dateObject, close));
    }
    return dataPoints;
}

person Akshay Pandey    schedule 17.07.2018    source источник
comment
пожалуйста, обрежьте свои фотографии так, чтобы они отображали только нужные графы, а не весь экран смартфона.   -  person Psytho    schedule 17.07.2018


Ответы (1)


DataPoint[] dataPoint = new DataPoint[total_count]; LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dataPoint);

установить эти атрибуты

  • graph.setDrawDataPoints (истина)
  • график.setMaxX(date2.getTime())
  • graph.setXAxisBoundsManual (ложь)
  • graph.addSeries (серия);

форматировать этикетку

`graph.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter() {
               @Override
               public String formatLabel(double value, boolean isValueX) {
                   if (isValueX) {
                       // show normal x values
                       Date date1 = IRoidAppHelper.parseTime(Helper.parseTime(productPriceData.getdate(), "yyyy-MM-dd'T'HH:mm:ssZ", "dd-MM-yyyy"), "dd-MM-yyyy");
                       String dateString =Helper.parseTime(date1.getTime(), "dd/MM");
                       return dateString;
                   } else {
                       // show currency for y values
                       return super.formatLabel(value, isValueX);
                   }
               }
           });`
person Riddhi Shankar    schedule 17.07.2018