关于MPAndroidChart折线图的使用

关于MPAndroidChart折线图的使用(干货)

引用:

`compile 'com.github.PhilJay:MPAndroidChart:v2.0.8` 

XML:

<com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_marginTop="10dp"
/>

折线图:

//两个折线图,arrD与arrY是第一个折线图的xy轴的数据数组;arrD1和arrY1是另一个折线图的xy轴数据;
LineData mLineData = getLineData(arrD, arrY, 2000,arrD1,arrY1);
//mLineData是折线图的数据,将数据传入并显示;
showChart(mLineChart, mLineData, Color.TRANSPARENT);

下面是方法;

/**
     * 生成一个数据
     * 如果需要修改x轴的,那么需要往lineDataSets里面add进去Entry的对象,里面在包含x与y的数值; 可以参考下面的文章;
     * http://blog.csdn.net/qq_36576738/article/details/62215810
     *
     * @param count 表示图表中有多少个坐标点
     * @param range 用来生成range以内的随机数
     * @return
     */
    private LineData getLineData(int count[], int countY[], float range,int count1[], int countY1[]) {
        ArrayList<String> xValues = new ArrayList<String>();
        for (int i = 0; i < count.length; i++) {
            // x轴显示的数据,这里默认使用数字下标显示
            xValues.add("" + count[i]);   ///  TODO i
        }

        // y轴的数据
        ArrayList<Entry> yValues = new ArrayList<Entry>();
        for (int i = 0; i < countY.length; i++) {
            float value = (float) countY[i];
            yValues.add(new Entry(value, i));
        }

        //新加一个光谱的数据; y1   ����������
        //这里显示Y1的数值时,X轴使用的不变  和之前的数据是一样的 ,只是改变Y轴;
        ArrayList<Entry> yValues1 = new ArrayList<Entry>();
        for (int i = 0; i < countY1.length; i++) {
            float value = (float) countY1[i];
            yValues1.add(new Entry(value, i));
        }
        LineDataSet lineDataSet1 = new LineDataSet(yValues1,"图二");
        lineDataSet1.setLineWidth(0.5f);
        lineDataSet1.setCircleSize(0.5f);
        lineDataSet1.setCircleColorHole(Color.BLUE);
        lineDataSet1.setColor(Color.BLUE);
        lineDataSet1.setCircleColor(Color.BLUE);
        lineDataSet1.setHighLightColor(Color.TRANSPARENT);
        //--------图二-------


        // create a dataset and give it a type
        // y轴的数据集合
        LineDataSet lineDataSet = new LineDataSet(yValues, "图1");
//        LineDataSet lineDataSet = new LineDataSet(yValues, "测试折线图" /*显示在比例图上*/);
        // mLineDataSet.setFillAlpha(110);
        // mLineDataSet.setFillColor(Color.RED);

        //用y轴的集合来设置参数
        lineDataSet.setLineWidth(1f); // 线宽
        lineDataSet.setCircleSize(1f);// 显示的圆形大小
        lineDataSet.setCircleColorHole(Color.RED);
        lineDataSet.setColor(Color.RED);// 显示颜色
        lineDataSet.setCircleColor(Color.RED);// 圆形的颜色
        lineDataSet.setHighLightColor(Color.TRANSPARENT); // 高亮的线的颜色

        //������������
        ArrayList<LineDataSet> lineDataSets = new ArrayList<LineDataSet>();
        lineDataSets.add(lineDataSet); // add the datasets

        // 这里lineDataSets是接收折线图数据的集合   有几个折线图数据就往这里面add进去;
        lineDataSets.add(lineDataSet1);



        // create a data object with the datasets
        //现在这里x轴都用的第一个折线图的数据;如果X轴的数据不一样,则往Entry里面添加XY对应的数据,可以参考http://blog.csdn.net/qq_36576738/article/details/62215810
        LineData lineData = new LineData(xValues, lineDataSets); 

        return lineData;
    }

显示:

 // 设置显示的样式  所有注掉的没有用上,可以慢慢根据需求来改;
    private void showChart(LineChart lineChart, LineData lineData, int color) {
        lineChart.setDrawBorders(false);  //是否在折线图上添加边框

        // no description text
        lineChart.setDescription("");// 数据描述
        // 如果没有数据的时候,会显示这个,类似listview的emtpyview
        lineChart.setNoDataTextDescription("You need to provide data for the chart.");

        // enable / disable grid background
        lineChart.setDrawGridBackground(true); // 是否显示表格颜色
        lineChart.setDrawBorders(true);
        lineChart.setGridBackgroundColor(Color.WHITE); // 表格的的颜色,在这里是是给颜色设置一个透明度
//        lineChart.setGridBackgroundColor(Color.WHITE & 0x70FFFFFF); // 表格的的颜色,在这里是是给颜色设置一个透明度

        // enable touch gestures
        lineChart.setTouchEnabled(false); // 设置是否可以触摸

        // enable scaling and dragging
        lineChart.setDragEnabled(false);// 是否可以拖拽
        lineChart.setScaleEnabled(false);// 是否可以缩放

        // if disabled, scaling can be done on x- and y-axis separately
        lineChart.setPinchZoom(false);//

//        lineChart.setBackgroundColor(Color.rgb(256, 256, 256));// 设置背景
        lineChart.setBackgroundColor(color);// 设置背景

        // add data
        lineChart.setData(lineData); // 设置数据

        // get the legend (only possible after setting data)
        Legend mLegend = lineChart.getLegend(); // 设置比例图标示,就是那个一组y的value的

        // modify the legend ...
        // mLegend.setPosition(LegendPosition.LEFT_OF_CHART);
        mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式
        mLegend.setFormSize(6f);// 字体
        mLegend.setTextColor(Color.WHITE);// 颜色
//      mLegend.setTypeface(mTf);// 字体
        lineChart.getAxisRight().setEnabled(false);
//        lineChart.getAxisLeft().setEnabled(false);
        lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
        Legend legend = lineChart.getLegend();
        legend.setEnabled(false);

        lineChart.animateX(0); // 立即执行的动画,x轴 time
//        lineChart.invalidate(); //刷新  没用上;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值