AndroidMPChart——LineChart

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Zhangshiting/article/details/83750547

AndroidMPChart的获取

依赖:

Project 的build.gradle文件中添加

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}


然后在 module中的build,gradle 中添加

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

布局文件:

 <com.github.mikephil.charting.charts.LineChart
                android:id="@+id/full_linchart"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

初始化LineChart:

        //初始化数据对象
        lineData = new LineData();

        //清除原有的设置
        lineChart.clear();


        //设置曲线图的数据
        lineChart.setData(lineData);


        // 如果没有数据的时候,会显示这个
        lineChart.setNoDataText("无数据");

        //无数据时的文本颜色
        lineChart.setNoDataTextColor(Color.parseColor("#000000"));

        //设置是否缩放
        lineChart.setScaleEnabled(false);

         //是否在折线图上添加边框,false也会有一个淡色的矩形边框
        lineChart.setDrawBorders(true);

        //设置是否需要画网格
        lineChart.setDrawGridBackground(false);

        //设置放大图表后是否可以拖拽
        lineChart.setDragEnabled(true);

         //不显示边框
        lineChart.setDrawBorders(false);

         //不显示描述
        lineChart.getDescription().setEnabled(false);

        // 设置比例图标示     legend:图例,说明
        Legend mLegend = lineChart.getLegend();

        // 图例样式
        mLegend.setForm(Legend.LegendForm.NONE);

         // 字体大小
        mLegend.setFormSize(14f);

        // 字体颜色
        mLegend.setTextColor(Color.BLACK);

        //是否换行
        mLegend.setWordWrapEnabled(true);

        //显示图例位置
        //垂直时的位置
        mLegend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        //平行时的位置
        mLegend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        //方向
        mLegend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
       // 字体样式
        mLegend.setTypeface(Typeface.DEFAULT);


       // 这里其实就是绘制折线的动画,接收的是一个时间毫秒值
        lineChart.animateX(2000);


         //描述, lineChart.getDescription().setEnabled(true)为true时显示
        Description description = new Description();
         //设置描述文本
        description.setText("文本");
        //设置文本颜色
        description.setTextColor(Color.BLACK);
        //设置文本字体大小
        description.setTextSize(11f);
        //设置y轴偏移
        description.setYOffset(-30);
        // 设置是否显示
        description.setEnabled(true);
        //设置曲线的描述
        lineChart.setDescription(description);


        /**
        * 设置X轴
        * * */
        //获取x轴
        XAxis xAxis = lineChart.getXAxis();
        //设置x轴位置
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //是否显示X坐标轴上的刻度竖线,默认是true
        xAxis.setDrawGridLines(false);
        //设置为true当一个页面显示条目过多,X轴值隔一个显示一个
        xAxis.setGranularityEnabled(true);
        //设置最小间隔,防止当放大时,出现重复标签。
        xAxis.setGranularity(1f);
        //设置滑动
        //一个界面最少显示多少个点
        lineChart.setVisibleXRangeMinimum(0);
        //一个界面最大显示多少个点,其余滑动显示
        lineChart.setVisibleXRangeMaximum(6);
        //第一个参数是X轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
        xAxis.setLabelCount(2, true);
        //是否绘制坐标轴的线,即含有坐标的那条线,默认是true
        xAxis.setDrawAxisLine(false);

        //自定义x轴的点标签
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return "";
            }
        });


        /**
         *
         * 设置左侧Y轴
         * */
        //获取左Y轴
        YAxis leftAxis = lineChart.getAxisLeft();
        //获取右y轴
        YAxis rightAxis = lineChart.getAxisRight();
        //保证Y轴从0开始,不然会上移一点
        leftAxis.setAxisMinimum(0f);
        //设置Y轴显示最大标签数
        leftAxis.setAxisMaximum(6);
        //设置显示右y轴
        rightAxis.setEnabled(false);
        //第一个参数是Y轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
        leftAxis.setLabelCount(yLableCount, false);
        //是否绘制坐标轴的线,即含有坐标的那条线,默认是true
        leftAxis.setDrawAxisLine(false);
        //设置为true当一个页面显示条目过多,X轴值隔一个显示一个
        leftAxis.setGranularityEnabled(true);
        //设置最小间隔,防止当放大时,出现重复标签。
        leftAxis.setGranularity(1f);

        //限制线  第一个参数:限制大小  第二个参数:限制线标签
        LimitLine limitLine = new LimitLine(42f, "压力上限 42");
        //限制线颜色
        limitLine.setLineColor(Color.parseColor("#f31818"));
        //限制线宽度
        limitLine.setLineWidth(1);
        //左y轴添加限制线
        leftAxis.addLimitLine(limitLine);

        //多条添加
        LimitLine limitLine1 = new LimitLine(28f, "压力下限 28");
        limitLine1.setLineColor(Color.parseColor("#f31818"));
        limitLine1.setLineWidth(1);
        leftAxis.addLimitLine(limitLine1);

设置数据:

  //x,y轴,泛型为Entry的集合
        ArrayList<Entry> Values = new ArrayList<Entry>();
        for (int i = 0; i < list.size(); i++) {

            VtDateValueBean vtDateValueBean = list.get(i);
            float preValue = Float.parseFloat(vtDateValueBean.getPreValue());

            Values.add(new Entry(i, preValue));  //i是x轴的数据,yvalue是y轴的数据

        }

        //把数据封装成LineDataSet,
        LineDataSet lineDataSet = new LineDataSet(Values, "曲线图" /*显示在比例图上*/);
        lineDataSet.setLineWidth(1f);                              // 线宽,折线的线宽
        lineDataSet.setColor(Color.parseColor("#4BC1FD"));//折线的颜色
        lineDataSet.setDrawCircles(true);//图表上的数据点是否用小圆圈表示
        lineDataSet.setCircleSize(2f);                             // x,y交点处显示的圆形大小
        lineDataSet.setCircleColor(Color.BLACK);   //折线上的圆形的颜色
        lineDataSet.setDrawCircleHole(true);//是否是空心圆
        lineDataSet.setHighlightEnabled(true);//是否高亮显示
        lineDataSet.setDrawValues(true);//是否在点上绘制values
        lineDataSet.setValueTextColors(colorlist);//设置点上value的颜色,颜色集合(设置不同颜色)
        lineDataSet.setValueTextColor(Color.BLACK);//设置统一颜色
        lineDataSet.setValueTextSize(13f);//设置点上value大小



        //修改数据格式
        lineDataSet.setValueFormatter(new IValueFormatter() {
            @Override
            public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
                DecimalFormat fnum = new DecimalFormat("##0.00");
                return fnum.format(value);
            }
        });

        lineData.addDataSet(lineDataSet);//添加折线


 

猜你喜欢

转载自blog.csdn.net/Zhangshiting/article/details/83750547