菜鸟学习笔记-MPChart动态添加

Android-MPchart动态添加

菜鸟初学,根据大佬的代码学习整理的,适合刚学MPChart的看
MPChart2.1.6版本
在进行动态添加前要设置一个linedata

LineData lineData=new LineData();
lineChart.setData(lineData);

这样就会在程序里显示一个空白的框

1.添加一个点

        LineData data=lineChart.getData();//获取linechart的linedata因为要进行修改先获取它
        LineDataSet set =data.getDataSetByIndex(data.getDataSetCount()-1);//获取当前的linedataset
        if (set==null) //没有进行创建并添加
        {
            set=createlinedataset();
            data.addDataSet(set);
        }
        //设置完linedataset就进行添加点
        data.addXValue(data.getXValCount()+"");//添加x轴数据,从零开始
        Entry entry=new Entry((float) (Math.random()*50), set.getEntryCount());
        data.addEntry(entry, data.getDataSetCount()-1);//data.getDataSetCount()-1这是将entry插入最后一个linedataset里
        lineChart.notifyDataSetChanged();//一定要先写这个,告诉linechart数据刷新了
        lineChart.invalidate();
        lineChart.setVisibleXRangeMaximum(5);//当前界面最多5个数据,x轴只会显示5个
        lineChart.moveViewToX(data.getXValCount()-5);//这是移动坐标轴位置,显示当前5个数据

创建新的linedataset方法很简单,也可以直接写进上面

private LineDataSet createlinedataset() {
        LineDataSet set=new LineDataSet(null,"1");
        return set;
    }

2.删除一个点

        LineData data=lineChart.getData();//老样子,先获取linechart的data
        LineDataSet set=data.getDataSetByIndex(data.getDataSetCount()-1);获取到最后一个linedataset
        if (set==null) //如果空创建
        {
            set=createlinedataset();
            data.addDataSet(set);
        }
        Entry last=set.getEntryForXIndex(set.getEntryCount()-1);//获取最后一个点的值 
        data.removeEntry(last, data.getDataSetCount()-1);//删除点
        lineChart.notifyDataSetChanged();
        lineChart.invalidate();

getEntryForXIndex(点的序号) 为什么减一?因为从是0开始的

data.removeEntry(last, data.getDataSetCount()-1);这个是指最后一个线,获取linedata的总数,然后删除最后一个的点,从零开始算。

3.添加一条线
暂无说明。

LineData data=lineChart.getData();
        int count=(data.getDataSetCount()+1);//可以不写
        ArrayList<Entry>yValues=new ArrayList<Entry>();//创建一个List存放Entry
        if (data.getXValCount()==0) //判断当前x轴是不是空的
        {
            for (int i = 0; i < 10; i++) 
            {
                data.addXValue((i + 1) + "");//如果空,添加数据
            }
        }
        for (int i = 0; i < data.getXValCount(); i++) 
        {
            yValues.add(new Entry((float) (Math.random()*50), i));//添加y轴数据
        }
          LineDataSet set = new LineDataSet(yValues, "" + count);

          Random random=new Random();//随机颜色
          int color1=random.nextInt(256);
          int color2=random.nextInt(256);
          int color3=random.nextInt(256);

          set.setCircleColor(Color.rgb(color1,color2,color3));
          set.setValueTextColor(Color.rgb(color1,color2,color3));
          set.setColor(Color.rgb(color1,color2,color3));

          data.addDataSet(set);
          lineChart.notifyDataSetChanged();
          lineChart.invalidate();

增加一条线无非就是新建一个linedataset然后添加数据,然后加入linedata里

4.删除一条线
不推荐看,自己想想就能写出了
获取最后一个linedataset,linedata里删除

LineData data=lineChart.getData();
        LineDataSet set=data.getDataSetByIndex(data.getDataSetCount()-1);
        data.removeDataSet(set);
        lineChart.notifyDataSetChanged();
        lineChart.invalidate();

猜你喜欢

转载自blog.csdn.net/hanmoliuxuan/article/details/82251856