菜鸟初学,根据大佬的代码学习整理的,适合刚学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();
```java
getEntryForXIndex(点的序号) 为什么减一?因为从是0开始的
data.removeEntry(last, data.getDataSetCount()-1);这个是指最后一个线,获取linedata的总数,然后删除最后一个的点,从零开始算。
**3.添加一条线**
暂无说明。
```java
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();