项目中用到饼状图使用的过程记录下来,方便后期使用查阅。
MPAndroidChart版本3.0.3
布局文件
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/mPieChart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"/>
代码
mPieChart = findViewById(R.id.mPieChart);
mPieChart.setExtraOffsets(20f, 20f, 20f, 20f);
// 设置饼图是否接收点击事件,默认为true
mPieChart.setTouchEnabled(true);
//设置饼图是否使用百分比
mPieChart.setUsePercentValues(true);
//设置图表转动阻力摩擦系数[0,1] 就是转动的摩擦系数 如果是0表示手指滑动立即停止
mPieChart.setDragDecelerationFrictionCoef(0.95f);
//设置饼图右下角的文字描述
Description des = new Description();
des.setText("测试");
//设置饼图右下角的文字大小
des.setTextSize(16f);
mPieChart.setDescription(des);
//设置pieChart图表的描述是否显示
mPieChart.getDescription().setEnabled(false);
//是否显示圆盘中间文字,默认显示
mPieChart.setDrawCenterText(true);
//设置圆盘中间文字
mPieChart.setCenterText("中间文字");
//设置圆盘中间文字的大小
mPieChart.setCenterTextSize(20);
//设置圆盘中间文字的颜色
mPieChart.setCenterTextColor(Color.RED);
//设置圆盘中间文字的字体
mPieChart.setCenterTextTypeface(Typeface.DEFAULT);
//设置中间透明圈的半径,值为所占饼图的百分比
//mPieChart.setTransparentCircleRadius(50);
mPieChart.setEntryLabelColor(Color.BLACK); //设置pieChart图表文本字体颜色
//mPieChart.setEntryLabelTypeface(Typeface.DEFAULT); //设置pieChart图表文本字体样式
//mPieChart.setEntryLabelTextSize(10f); //设置pieChart图表文本字体大小
//是否显示饼图中间空白区域,默认显示
mPieChart.setDrawHoleEnabled(true);
//设置圆盘是否转动,默认转动
mPieChart.setRotationEnabled(true);
//设置初始旋转角度
mPieChart.setRotationAngle(0);
//设置比例图
Legend mLegend = mPieChart.getLegend();
//设置比例图显示在饼图的哪个位置
mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
//设置比例图的形状,默认是方形,可为方形、圆形、线性
mLegend.setForm(Legend.LegendForm.CIRCLE);
//设置分类代表的值不显示
mLegend.setDrawInside(false);
mLegend.setEnabled(false);
//设置X轴动画
mPieChart.animateX(1800);
//模拟数据
ArrayList<PieEntry> entries = new ArrayList<>();
entries.add(new PieEntry(40, "产品1"));
entries.add(new PieEntry(20, "产品2"));
entries.add(new PieEntry(30, "产品3"));
entries.add(new PieEntry(10, "产品4"));
//显示在比例图上
PieDataSet dataSet = new PieDataSet(entries, "");
//设置个饼状图之间的距离
dataSet.setSliceSpace(3f);
// 部分区域被选中时多出的长度
dataSet.setSelectionShift(5f);
// 设置饼图各个区域颜色
ArrayList<Integer> colors = new ArrayList<>();
colors.add(Color.RED);
colors.add(Color.GREEN);
colors.add(Color.BLUE);
colors.add(Color.YELLOW);
dataSet.setColors(colors);
//设置提示区域的线开始点距离圆形偏离百分比
dataSet.setValueLinePart1OffsetPercentage(80.f);
//再环内部分线的长
dataSet.setValueLinePart1Length(0.4f);
//再环外部分线的长
dataSet.setValueLinePart2Length(0.2f);
//提示字体大小
dataSet.setValueTextSize(14f);
//线的颜色
dataSet.setValueLineColor(Color.DKGRAY);
//线的粗细
dataSet.setValueLineWidth(2);
//Y的值现在饼上还是再饼外
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
PieData data = new PieData(dataSet);
mPieChart.setData(data);
// 撤销所有的亮点
mPieChart.highlightValues(null);
mPieChart.invalidate();