首页 > 解决方案 > 当有单个值或y轴值相同时,Hellocharts android库不渲染图表

问题描述

我正在使用 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);


    }
}

标签: javaandroidcharts

解决方案


这是我最终找到的解决方案,手动设置视口。

        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);

希望它将来对某人有所帮助。


推荐阅读