今日主要学习了MPAndroid折线图:
1.首先要引入开源库:
在项目根目录的build.gradle文件中加入如下代码
allprojects { repositories { maven { url "https://jitpack.io" } } }
在app根目录的buil.gradle文件中加入依赖
dependencies { compile 'com.github.PhilJay:MPAndroidChart:v3.0.1' }
2.实现利用Entry存放数据:
List<Entry> list = new ArrayList<>(); for (int i = 0; i < listwendate.size(); i++) { list.add(new Entry(i, listwendate.get(i).getWendu())); System.out.println(listwendate.get(i).getWendu());//其中两个数字对应的分别是 X轴 Y轴 }
3.再创建LineDataSet对折线图的的一些属性进行设置:
LineDataSet lineDataSet = new LineDataSet(list, "温度"); lineDataSet.setColor(getResources().getColor(R.color.teal_200)); //折线颜色 lineDataSet.setFillColor(getResources().getColor(R.color.teal_200)); //折线以下填充颜色 lineDataSet.setDrawFilled(true); //是否填充 lineDataSet.setFillAlpha(10); //填充颜色透明度 lineDataSet.setLineWidth(1f); //折线宽度 //是否画折线点上的空心圆 false表示直接画成实心圆 lineDataSet.setDrawCircleHole(false); // lineDataSet.setValueTextColor(getResources().getColor(R.color.tv_default_blue)); //折线上数值颜色 // lineDataSet.setCircleColor(getResources().getColor(R.color.tv_default_blue)); //折线上圆点的颜色 lineDataSet.setCircleRadius(2); //圆点的半径 lineDataSet.setValueTextSize(12);//折线字号 LineData lineData = new LineData(lineDataSet);
4.对控件进行一些设置:
map_Linechart.setData(lineData); map_Linechart.setScaleXEnabled(true); //支持x轴缩放 map_Linechart.setScaleYEnabled(false); //禁止y轴缩放 // lineChart1.getXAxis().setLabelRotationAngle(-15); // map_Linechart.getXAxis().setDrawGridLines(false); //是否绘制X轴上的网格线(背景里面的竖线 // map_Linechart.getAxisLeft().setDrawGridLines(false); //是否绘制Y轴上的网格线(背景里面的横线) // lineChart1.getXAxis().setGridColor(getResources().getColor(R.color.tv_default_gray)); // lineChart1.getAxisLeft().setGridColor(getResources().getColor(R.color.tv_default_gray)); map_Linechart.getXAxis().setGranularity(1); map_Linechart.getDescription().setEnabled(false); //隐藏文字介绍 map_Linechart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM); //X轴所在位置 默认为上面 map_Linechart.getLegend().setEnabled(false); //隐藏图例 // lineChart1.getAxisLeft().setEnabled(false); //隐藏左边的y轴 map_Linechart.getAxisRight().setEnabled(false); //隐藏右边的y轴 //数据更新 map_Linechart.notifyDataSetChanged(); map_Linechart.invalidate();
5.自定义x轴以及折线上显示的内容:
lineDataSet.setValueFormatter(new IValueFormatter() { @Override public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { return ""+listwendate.get(dataSetIndex).getWendu(); } }); map_Linechart.getXAxis().setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float v, AxisBase axisBase) { if (v < listwendate.size()) { String s = String.valueOf(listwendate.get((int) v).getDateandtime()); String[] time=s.split(" "); String month = time[0].substring(5, 7); String day = time[0].substring(8,10); return month + "." + day; } return ""; } });