安卓 MPAndroidChart 饼状图

简介

MPAndroidChart 是一个开源的安卓图表库,提供了丰富的图表类型和自定义选项,能够方便地在安卓应用中展示各种图表。其中,饼状图是一种常用的图表类型,用于展示数据的占比关系。

本文将介绍如何使用 MPAndroidChart 库在安卓应用中绘制饼状图,并提供代码示例和详细说明。在开始之前,确保已经在项目中添加了 MPAndroidChart 的依赖。

绘制饼状图

首先,在 XML 布局文件中添加一个 PieChart 控件:

<com.github.mikephil.charting.charts.PieChart
    android:id="@+id/pieChart"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后,在代码中获取该控件的引用,并进行相应的配置和数据设置:

PieChart pieChart = findViewById(R.id.pieChart);

配置

可以使用 set... 方法对饼状图进行配置,以下是一些常用的配置选项:

方法 描述
setUsePercentValues(boolean) 是否显示百分比
setDescription(Description) 设置描述文本
setDrawHoleEnabled(boolean) 是否绘制中间的空洞
setHoleColor(int) 设置中间空洞的颜色
setTransparentCircleColor(int) 设置透明圆的颜色
setTransparentCircleAlpha(int) 设置透明圆的透明度
setTransparentCircleRadius(float) 设置透明圆的半径
setDrawCenterText(boolean) 是否绘制中间的文字
setCenterText(String) 设置中间文字
setCenterTextRadiusPercent(float) 设置中间文字的半径占饼状图半径的百分比
setCenterTextSize(float) 设置中间文字的大小
setDrawEntryLabels(boolean) 是否绘制每个扇形区域的标签
setEntryLabelColor(int) 设置标签的颜色
setEntryLabelTextSize(float) 设置标签的大小
setEntryLabelTypeface(Typeface) 设置标签的字体
setDrawMarkers(boolean) 是否绘制选中扇形区域时的标记
setMarker(IMarker) 设置标记

可以根据实际需求选择相应的配置选项进行设置。

数据设置

饼状图的数据由 PieDataPieDataSet 组成。PieData 代表整个饼状图的数据集合,PieDataSet 代表具体的数据集。

首先,创建一个 ArrayList<PieEntry> 对象,用于存储每个扇形区域的数值和标签:

ArrayList<PieEntry> entries = new ArrayList<>();
entries.add(new PieEntry(30, "A"));
entries.add(new PieEntry(20, "B"));
entries.add(new PieEntry(10, "C"));
entries.add(new PieEntry(40, "D"));

然后,创建一个 PieDataSet 对象,将数据集合传入,并设置一些显示样式的属性:

PieDataSet dataSet = new PieDataSet(entries, "Data");
dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
dataSet.setValueTextColor(Color.WHITE);
dataSet.setValueTextSize(12f);

接下来,创建一个 PieData 对象,将 PieDataSet 对象传入:

PieData data = new PieData(dataSet);

最后,将 PieData 对象设置给 PieChart 控件:

pieChart.setData(data);

绘制

在完成配置和数据设置后,调用 pieChart.invalidate() 方法即可绘制饼状图。

pieChart.invalidate();

示例代码

下面是一个简单的示例代码,演示了如何使用 MPAndroidChart 在安卓应用中绘制饼状图:

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import com.github.mikephil.charting.charts.P