MPAndroidChart饼状图使用文档
第一步:导包
在工程目录的build文件中必须要引入maven { url "https://jitpack.io" }
如图:
在app中的build.gradle中添加
implementation 'com.mysugr.MPAndroidChart:MPAndroidChart:3.1.0-mysugr-1'
如图:
第二步:创建xml
如图:
需要注意的是最好给PieChart定个高,它不能自适应
第三步:初始化饼状图(使用少量的方法先简单弄一个,下面会介绍各个方法的详情)
第四步:添加参数
运行结果:
其它方法说明:
初始化饼状图的方法: mPieChart = findViewById(R.id.mPieChart); mPieChart.setUsePercentValues(true);//设置value是否用显示百分数,默认为false mPieChart.getDescription().setEnabled(false);//设置描述 mPieChart.setExtraOffsets(5, 10, 5, 5);//设置饼状图距离上下左右的偏移量 mPieChart.setDragDecelerationFrictionCoef(0.95f);//设置阻尼系数,范围在[0,1]之间,越小饼状图转动越困难 //设置中间文字 mPieChart.setDrawCenterText(true);//是否绘制中间的文字 mPieChart.setCenterText(generateCenterSpannableText()); mPieChart.setCenterTextSize(10f); mPieChart.setNoDataText("暂无数据");// 如果没有数据的时候,会显示这个,类似ListView的EmptyView mPieChart.setDrawHoleEnabled(true);//是否绘制饼状图中间的圆 mPieChart.setHoleColor(Color.WHITE);//饼状图中间的圆的绘制颜色 mPieChart.setTransparentCircleColor(Color.WHITE);//设置圆环的颜色 mPieChart.setTransparentCircleAlpha(110);//设置圆环的透明度[0,255] mPieChart.setHoleRadius(58f);//饼状图中间的圆的半径大小 mPieChart.setTransparentCircleRadius(61f);//设置圆环的半径值 mPieChart.setRotationAngle(0);//设置饼状图旋转的角度 //触摸旋转 mPieChart.setRotationEnabled(true);//设置饼状图是否可以旋转(默认为true) mPieChart.setHighlightPerTapEnabled(true);//设置旋转的时候点中的tab是否高亮(默认为true) //变化监听 mPieChart.setOnChartValueSelectedListener(this);//点击饼状图后的变化监听 //饼状图的动画 durationMillis:动画所用时长,easing:动画类型 mPieChart.animateY(1400, Easing.EasingOption.EaseInOutQuad); //设置每个tab比例块的显示位置如图: Legend l = mPieChart.getLegend();//设置比例块 l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); l.setOrientation(Legend.LegendOrientation.HORIZONTAL); l.setDrawInside(false); l.setXEntrySpace(10f);//设置tab比例块之间X轴方向上的空白间距值(水平排列时) l.setYEntrySpace(0f);//设置tab比例块之间Y轴方向上的空白间距值(垂直排列时) l.setYOffset(10f); l.setFormSize(10f);//设置比例块大小 l.setTextSize(12f);//设置比例块字体大小 l.setForm(Legend.LegendForm.CIRCLE);//设置比例块图标形状,默认为方块 l.setEnabled(true);//设置是否启用比例块,默认启用 l.setWordWrapEnabled(true);//设置比例块换行... // 输入标签样式 mPieChart.setDrawEntryLabels(true);//设置是否绘制Label mPieChart.setEntryLabelColor(Color.WHITE);//设置绘制Label的颜色 mPieChart.setEntryLabelTextSize(12f);//设置绘制Label的字体大小
//设置数据 PieDataSet dataSet = new PieDataSet(entries, "三年级一班"); dataSet.setSliceSpace(3f); dataSet.setSelectionShift(5f); //数据和颜色 ArrayList<Integer> colors = new ArrayList<Integer>(); for (int c : ColorTemplate.PASTEL_COLORS) colors.add(c); colors.add(ColorTemplate.getHoloBlue()); dataSet.setColors(colors); PieData data = new PieData(dataSet); data.setValueFormatter(new PercentFormatter()); data.setValueTextSize(11f);//数据字体大小 data.setValueTextColor(Color.WHITE);//数据字体颜色 mPieChart.setData(data); mPieChart.highlightValues(null); //刷新 mPieChart.invalidate();