一、导入MPAndroidChart 3.0包
在项目中的build.gradle中导入compile'com.github.PhilJay:MPAndroidChart:v3.0.1'。
二、项目中的使用(以柱状图为例)
新建布局文件activity_barchart。
三、项目中使用
-
获取BarChart的id,并设置一些相关的属性
private void initCheckParChart(){ check_bc = (BarChart) getView().findViewById(R.id.check_bc); check_bc.getDescription().setEnabled(false); Description description = new Description(); description.setText("验收统计");//设置右下角的描述信息 description.setTextSize(14f);//设置描述信息字体大小 check_bc.setDescription(description); check_bc.setNoDataText("暂无数据"); //设置空表的描述信息 check_bc.setDrawGridBackground(false);//是否绘制网格背景 check_bc.setDrawValueAboveBar(true);//将Y数据显示在点的上方 check_bc.setPinchZoom(true);//挤压缩放 check_bc.setDrawBarShadow(false); check_bc.setDrawGridBackground(false); check_bc.setScaleYEnabled(false); check_bc.setDoubleTapToZoomEnabled(false);//双击缩放 check_bc.animateY(2500); check_bc.getLegend().setEnabled(false); initCheckData(); }
2.解析统计数据
数据使用的是自己写的json串,后期可以修改成从服务器获取的json。
private String CHECKJSON = "{\n" + " \"rows\":[\n" + " {\n" + " \"NAME\":\"立项\",\n" + " \"NUM\":\"10\"\n" + " },\n" + " {\n" + " \"NAME\":\"招标\",\n" + " \"NUM\":\"26\"\n" + " },\n" + " {\n" + " \"NAME\":\"签合同\",\n" + " \"NUM\":\"30\"\n" + " },\n" + " {\n" + " \"NAME\":\"验收\",\n" + " \"NUM\":\"24\"\n" + " },\n" + " {\n" + " \"NAME\":\"结项\",\n" + " \"NUM\":\"15\"\n" + " }\n" + " ]\n" + "}";
public void initCheckData(){ try { JSONObject object = new JSONObject(CHECKJSON); JSONArray array = object.getJSONArray("rows"); ArrayList
entries = new ArrayList (); ArrayList xVals = new ArrayList (); for(int j = 0;j
3.给柱状图添加数据
最需要注意的是3.0以后给X轴赋值为汉字的时候不能使用BarData bardata = new BarData( xVals,dataSets)方法了,我使用以下方法给X轴添加汉字。在使用的同时需要注意一定要添加此方法xAxis.setLabelCount(xVals.size())来设置X轴的个数,如果不使用会出现多个相同的名称。
xAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return String.valueOf(xVals.get((int) value)); } });
private void setData(ArrayList
entries,final ArrayList xVals) { XAxis xAxis = check_bc.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawGridLines(false); //设置x轴的数据 xAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return String.valueOf(xVals.get((int) value)); } }); //显示个数 xAxis.setLabelCount(xVals.size()); BarDataSet dataSet = new BarDataSet(entries, "验收统计"); //数据和颜色 ArrayList colors = new ArrayList (); // 柱状图颜色 colors.add(Color.rgb(44,120,221)); colors.add(Color.rgb(239,167,52)); colors.add(Color.rgb(71,183,61)); colors.add(Color.rgb(87,162,253)); colors.add(Color.rgb(255,125,39)); dataSet.setColors(colors); // dataSet.setValueTextColors(colors); ArrayList dataSets = new ArrayList (); dataSets.add(dataSet); BarData bardata = new BarData(dataSets); bardata.setDrawValues(true); bardata.setValueTextColor(Color.BLACK); bardata.setValueTextSize(13); check_bc.setData(bardata); check_bc.animateXY(800,800);//图表数据显示动画 check_bc.setVisibleXRangeMaximum(15);//设置屏幕显示条数 check_bc.invalidate(); //刷新 check_bc.invalidate(); }
作者水平有限,如有错误,请多多指教。