Библиотека Hellocharts android не отображает диаграмму при наличии одного значения или при одинаковых значениях оси y - PullRequest
0 голосов
/ 13 апреля 2020

Я использую библиотеку hellochart https://github.com/lecho/hellocharts-android, чтобы показать линейную диаграмму в моем приложении.

Когда я пытаюсь сгенерировать график с одним значением, он просто показывает пустой график ( Предполагается, что на графике должна отображаться одна точка, указывающая правильное значение?).

Проблема также сохраняется, если первое и второе значения оси y одинаковы (если имеется только 2 значения).

Есть идеи, почему возникает эта странная проблема?

Используемый код приведен ниже

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List<String> datelist = new ArrayList<String>();
        List<Float> weightlist = new ArrayList<Float>();
        datelist.add("12/Apr/2020");
        weightlist.add(72f);
        datelist.add("13/Apr/2020");
        weightlist.add(72f);

        LineChartView chart = findViewById(R.id.chart);

        List<AxisValue> axisValues = new ArrayList<AxisValue>();
        List<PointValue> values = new ArrayList<PointValue>();
        for (int i = 0; i < datelist.size(); ++i) {
            values.add(new PointValue(i, weightlist.get(i)));
            axisValues.add(new AxisValue(i).setLabel(datelist.get(i)));
        }

        Line line = new Line(values).setColor(Color.BLUE).setCubic(false);
        line.setHasLabels(true);
        List<Line> lines = new ArrayList<Line>();
        lines.add(line);

        LineChartData data = new LineChartData();
        data.setLines(lines);

        data.setAxisXBottom(new Axis(axisValues));
        data.setAxisYLeft(new Axis());

        chart.setLineChartData(data);


    }
}

1 Ответ

0 голосов
/ 15 апреля 2020

Это решение, которое я наконец-то нашел, чтобы установить область просмотра вручную.

        float ymax= maxyvalue +10f;
        final Viewport v = new Viewport(chart.getMaximumViewport());
        v.top =ymax; //max value
        v.bottom = 0f;  //min value
        chart.setMaximumViewport(v);
        chart.setCurrentViewport(v);

Надеюсь, это поможет кому-нибудь в будущем.

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