MpAndroidChart 学习篇-柱状图和饼状图学习笔记
1.先上图
饼状图
package com.org.gsc.chartdemo.activitys; import android.graphics.Color; import com.github.mikephil.charting.charts.PieChart; import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.data.PieData; import com.github.mikephil.charting.data.PieDataSet; import com.github.mikephil.charting.data.PieEntry; import com.github.mikephil.charting.formatter.PercentFormatter; import com.github.mikephil.charting.interfaces.datasets.IPieDataSet; import com.github.mikephil.charting.utils.ColorTemplate; import com.org.gsc.chartdemo.R; import com.org.gsc.chartdemo.bases.BaseActivity; import java.util.ArrayList; import java.util.List; /** * Created by qundui on 2017/8/30. * 饼状图页面 */ public class PieActivity extends BaseActivity { private PieChart mPieChart; private List<PieEntry> y=new ArrayList<>(); private PieDataSet dateset=new PieDataSet(y,"冰砖图"); private PieData mdata=new PieData(dateset); @Override protected void doBusy() { mPieChart= findView(R.id.pc); mPieChart.getDescription().setEnabled(false); mPieChart.setUsePercentValues(true); mPieChart.setExtraOffsets(5, 10, 5, 5); mPieChart.setCenterText("我是郭神,我为我自己代言"); //做动画 mPieChart.animateXY(2000,2000); // mPieChart.setDrawHoleEnabled(false);//是否铺满 mPieChart.setHoleColor(Color.GREEN);//设置内圈的颜色 mPieChart.setTransparentCircleColor(Color.WHITE);//设置内圈边缘的颜色 mPieChart.setTransparentCircleAlpha(110); mPieChart.setRotationAngle(0); mPieChart.setHoleRadius(58f); mPieChart.setTransparentCircleRadius(61f); //图例设置 Legend l = mPieChart.getLegend(); l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); l.setOrientation(Legend.LegendOrientation.VERTICAL); l.setDrawInside(false); l.setTextColor(Color.GREEN); l.setTextSize(12); l.setXEntrySpace(7f); l.setYEntrySpace(0f); l.setYOffset(0f); y.add(new PieEntry(0.1f,"第1个饼子")); y.add(new PieEntry(0.5f,"第2个饼子")); y.add(new PieEntry(0.2f,"第3个饼子")); y.add(new PieEntry(0.1f,"第4个饼子")); y.add(new PieEntry(0.1f,"第5个饼子")); //设置外面显示Values dateset.setValueLinePart1OffsetPercentage(80.f); dateset.setValueLinePart1Length(0.2f); dateset.setValueLinePart2Length(0.4f); dateset.setValueLineColor(Color.RED); dateset.setValueTextColor(Color.BLACK); dateset.setValueTextSize(20); //dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dateset.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dateset.setColors(ColorTemplate.MATERIAL_COLORS); dateset.setSelectionShift(5f); dateset.setSliceSpace(3f);//各个饼状图之间空白间隙 mdata.setValueFormatter(new PercentFormatter()); mPieChart.setData(mdata); mPieChart.invalidate(); } @Override protected int getLayoutId() { return R.layout.act_pie; } }
2.柱状图
package com.org.gsc.chartdemo.activitys; import android.graphics.Color; import com.github.mikephil.charting.charts.BarChart; import com.github.mikephil.charting.components.LimitLine; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.data.BarData; import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.interfaces.datasets.IBarDataSet; import com.github.mikephil.charting.utils.ColorTemplate; import com.org.gsc.chartdemo.MyMarkerView; import com.org.gsc.chartdemo.R; import com.org.gsc.chartdemo.bases.BaseActivity; import java.util.ArrayList; import java.util.List; /** * Created by qundui on 2017/8/29. * 柱状图页面 */ public class BarAcivity extends BaseActivity { private BarChart barChart; private BarData mbardata; private BarDataSet m成绩; private LimitLine m及格分数线; @Override protected void doBusy() { barChart = (BarChart) findView(R.id.chart_bar); //获取X轴 XAxis xAxis = barChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); barChart.getDescription().setEnabled(false); xAxis.setDrawGridLines(false); //获取X 轴的自定义格式器 xAxis.setGranularity(1f);//设置最小间隔,防止当放大时,出现重复标签。 XAxisValueFormatter xAxisValueFormatter=new XAxisValueFormatter(barChart); xAxis.setValueFormatter(xAxisValueFormatter); //获取Y轴以及自定义的构造器 barChart.getAxisRight().setEnabled(false); barChart.getAxisLeft().setDrawGridLines(false); barChart.getAxisLeft().setValueFormatter(new YAxisValueFormatter()); m及格分数线 = new LimitLine(60f, "及格分数线"); m及格分数线.setTextColor(Color.RED); barChart.getAxisLeft().addLimitLine(m及格分数线); // List<Float> scores=new ArrayList<>(); // scores.add(23.5f); // scores.add(45f); // scores.add(78f); MyMarkerView myMarkerView=new MyMarkerView(this, R.layout.custom_marker_view); myMarkerView.setChartView(barChart); barChart.setMarker(myMarkerView); List<IBarDataSet> datasets=new ArrayList<>(); List<BarEntry> y=new ArrayList<>(); y.add(new BarEntry(0,30)); y.add(new BarEntry(1,56)); y.add(new BarEntry(2,78)); y.add(new BarEntry(3,80)); y.add(new BarEntry(4,90)); m成绩 = new BarDataSet(y, "成绩"); // m成绩.setColor(Color.GREEN); m成绩.setColors(ColorTemplate.MATERIAL_COLORS); datasets.add(m成绩); barChart.setData(new BarData(datasets)); // scores.add(90f); // YAxisValueFormatter yAxisValueFormatter=new YAxisValueFormatter(scores); // axisLeft.setValueFormatter(yAxisValueFormatter); } @Override protected int getLayoutId() { return R.layout.act_bar; } }
package com.org.gsc.chartdemo.activitys; import android.graphics.Color; import com.github.mikephil.charting.charts.BarChart; import com.github.mikephil.charting.charts.HorizontalBarChart; import com.github.mikephil.charting.components.LimitLine; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.data.BarData; import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.interfaces.datasets.IBarDataSet; import com.github.mikephil.charting.utils.ColorTemplate; import com.org.gsc.chartdemo.MyMarkerView; import com.org.gsc.chartdemo.R; import com.org.gsc.chartdemo.bases.BaseActivity; import java.util.ArrayList; import java.util.List; /** * Created by qundui on 2017/8/29. * 水平方向柱状图页面 */ public class BarHorizontalAcivity extends BaseActivity { private BarChart barChart; private BarDataSet m成绩; private LimitLine m及格分数线; @Override protected void doBusy() { barChart = (HorizontalBarChart) findView(R.id.chart_bar); //获取X轴 XAxis xAxis = barChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); barChart.getDescription().setEnabled(false); xAxis.setDrawGridLines(false); //获取X 轴的自定义格式器 xAxis.setGranularity(1f);//设置最小间隔,防止当放大时,出现重复标签。 XAxisValueFormatter xAxisValueFormatter=new XAxisValueFormatter(barChart); xAxis.setValueFormatter(xAxisValueFormatter); //获取Y轴以及自定义的构造器 barChart.getAxisRight().setEnabled(false); barChart.getAxisLeft().setDrawGridLines(false); barChart.getAxisLeft().setValueFormatter(new YAxisValueFormatter()); m及格分数线 = new LimitLine(60f, "及格分数线"); m及格分数线.setTextColor(Color.RED); barChart.getAxisLeft().addLimitLine(m及格分数线); // List<Float> scores=new ArrayList<>(); // scores.add(23.5f); // scores.add(45f); // scores.add(78f); MyMarkerView myMarkerView=new MyMarkerView(this, R.layout.custom_marker_view); myMarkerView.setChartView(barChart); barChart.setMarker(myMarkerView); List<IBarDataSet> datasets=new ArrayList<>(); List<BarEntry> y=new ArrayList<>(); y.add(new BarEntry(0,30)); y.add(new BarEntry(1,56)); y.add(new BarEntry(2,78)); y.add(new BarEntry(3,80)); y.add(new BarEntry(4,90)); m成绩 = new BarDataSet(y, "成绩"); // m成绩.setColor(Color.GREEN); m成绩.setColors(ColorTemplate.MATERIAL_COLORS); datasets.add(m成绩); barChart.setData(new BarData(datasets)); // scores.add(90f); // YAxisValueFormatter yAxisValueFormatter=new YAxisValueFormatter(scores); // axisLeft.setValueFormatter(yAxisValueFormatter); } @Override protected int getLayoutId() { return R.layout.act_barh; } }Demo 地址 https://git.oschina.net/gsc_abc/zhuzhuangtu.git