解决Hellochart数据相同不显示问题,数据首尾相连问题

2021-04-12  本文已影响0人  HMZZS
private void initLineChart(LineChartView line_chart, List<AxisValue> mAxisXValues, List<PointValue> mPointValues) {
        //折线的颜色(随机颜色)
//        Line line = new Line(mPointValues).setColor(Color.parseColor("#0084FF"));
        Line line = new Line(mPointValues).setColor(Color.parseColor("#"+(int)((Math.random()*9+1)*100000)));
        List<Line> lines = new ArrayList<>();
        line.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状  这里是圆形 (有三种 :ValueShape.SQUARE  ValueShape.CIRCLE  ValueShape.DIAMOND)
        line.setCubic(false);//曲线是否平滑,即是曲线还是折线
        line.setFilled(true);//是否填充曲线的面积
        line.setHasLabels(true);//曲线的数据坐标是否加上备注
        //      line.setHasLabelsOnlyForSelected(true);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
        line.setHasLines(true);//是否用线显示。如果为false 则没有曲线只有点显示
        line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示(每个数据点都是个大的圆点)
        lines.add(line);
        LineChartData data = new LineChartData();
        data.setLines(lines);
        //坐标轴
        Axis axisX = new Axis(); //X轴
        axisX.setHasTiltedLabels(true);  //X坐标轴字体是斜的显示还是直的,true是斜的显示
        axisX.setTextColor(Color.GRAY);  //设置字体颜色
        //axisX.setName("date");  //表格名称
        axisX.setTextSize(10);//设置字体大小
        axisX.setMaxLabelChars(10); //最多几个X轴坐标,意思就是你的缩放让X轴上数据的个数7<=x<=mAxisXValues.length
        axisX.setValues(mAxisXValues);  //填充X轴的坐标名称
        data.setAxisXBottom(axisX); //x 轴在底部
        //data.setAxisXTop(axisX);  //x 轴在顶部
        axisX.setHasLines(false); //x 轴分割线
        // Y轴是根据数据的大小自动设置Y轴上限(在下面我会给出固定Y轴数据个数的解决方案)
        Axis axisY = new Axis();  //Y轴
        axisY.setName("");//y轴标注
        axisY.setTextSize(10);//设置字体大小
        data.setAxisYLeft(axisY);  //Y轴设置在左边
        //data.setAxisYRight(axisY);  //y轴设置在右边
        // 这样添加y轴坐标 就可以固定y轴的数据
//        List<AxisValue> values = new ArrayList<>();
//        for(int i = 0; i < mPointValues.size(); i++){
//            AxisValue value = new AxisValue(mPointValues.get(i).getY());
//            values.add(value);
//        }
//        axisY.setValues(values);


        //设置行为属性,支持缩放、滑动以及平移
        line_chart.setInteractive(true);
        line_chart.setZoomType(ZoomType.HORIZONTAL);
        line_chart.setMaxZoom((float) 2);//最大方法比例
        line_chart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
        line_chart.setLineChartData(data);
        line_chart.setVisibility(View.VISIBLE);


        //设置X轴数据的显示个数(x轴0-10个数据)
        Viewport v = new Viewport(line_chart.getMaximumViewport());
        if (v.top == v.bottom && v.top != 0) {   //解决最大值最小值相等时,图不能展示问题
            v.top = v.top * 2;
            v.bottom = 0;
        } else if (v.bottom == 0.0) {    //解决最大值最小值相等时全部为0时,图不能展示问题
            v.top = 1;
            v.bottom = 0;
        }

        /**注:下面的7,10只是代表一个数字去类比而已
         * 当时是为了解决X轴固定数据个数。见(http://forum.xda-developers.com/tools/programming/library-hellocharts-charting-library-t2904456/page2);
         */
        line_chart.setMaximumViewport(v);
        v.left = 0;
        v.right = 10;
        line_chart.setCurrentViewport(v);
    }
图片.png
上一篇下一篇

猜你喜欢

热点阅读