MPAndroidChart 叠状图顶点值设置详解

MPAndroidChart 是一个强大的 Android 绘图库,广泛应用于数据可视化。叠状图(Stacked Bar Chart)作为其提供的一种图表类型,对于展示分项总和特别有效。本文将介绍如何使用 MPAndroidChart 创建叠状图,并设置顶点值。

何为叠状图?

叠状图是将几组数据叠加在一起的图表类型,可以直观地展示各部分与总量之比。在实际应用中,叠状图常用于销售统计、资源分配等场景。

MPAndroidChart 基础设置

首先,你需要在 build.gradle 文件中添加 MPAndroidChart 的依赖:

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

接下来,我们可以通过以下代码示例创建一个简单的叠状图。

数据准备

假设我们有下列公司销售数据:

月份 产品A 产品B 产品C
1月 20 30 25
2月 15 25 10
3月 30 20 35

创建叠状图的示例代码

在你的 Activity 中,我们可以进行如下的设置:

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private BarChart barChart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        barChart = findViewById(R.id.barChart);
        setupBarChart();
    }

    private void setupBarChart() {
        ArrayList<BarEntry> productAEntries = new ArrayList<>();
        ArrayList<BarEntry> productBEntries = new ArrayList<>();
        ArrayList<BarEntry> productCEntries = new ArrayList<>();

        // 1月
        productAEntries.add(new BarEntry(0, 20));
        productBEntries.add(new BarEntry(0, 30));
        productCEntries.add(new BarEntry(0, 25));

        // 2月
        productAEntries.add(new BarEntry(1, 15));
        productBEntries.add(new BarEntry(1, 25));
        productCEntries.add(new BarEntry(1, 10));

        // 3月
        productAEntries.add(new BarEntry(2, 30));
        productBEntries.add(new BarEntry(2, 20));
        productCEntries.add(new BarEntry(2, 35));

        BarDataSet setA = new BarDataSet(productAEntries, "产品A");
        BarDataSet setB = new BarDataSet(productBEntries, "产品B");
        BarDataSet setC = new BarDataSet(productCEntries, "产品C");

        setA.setColor(getResources().getColor(R.color.red));
        setB.setColor(getResources().getColor(R.color.blue));
        setC.setColor(getResources().getColor(R.color.green));

        BarData data = new BarData(setA, setB, setC);
        barChart.setData(data);
        barChart.setFitBars(true);
        barChart.invalidate(); // 刷新图表
    }
}

设置顶点值

叠状图的顶点值可以通过在 BarDataSet 中设置 ValueFormatter 来实现。例如,我们要显示每个条形图的顶点值,可以借助 ValueFormatter 类:

import com.github.mikephil.charting.formatter.ValueFormatter;

class MyValueFormatter extends ValueFormatter {
    @Override
    public String getBarLabel(float value) {
        return String.valueOf(value);
    }
}

// 在setupBarChart函数中
setA.setValueFormatter(new MyValueFormatter());
setB.setValueFormatter(new MyValueFormatter());
setC.setValueFormatter(new MyValueFormatter());

这样,图表上每个顶点将显示相应的数值。

ER图示例

为了帮助理解数据结构的关系,我们可用以下 ER 图展示:

erDiagram
    SALES {
        string Month
        int ProductA
        int ProductB
        int ProductC
    }

结论

通过以上示例,你已经了解了如何使用 MPAndroidChart 创建叠状图及设置顶点值。通过简单的配置和格式化器,你可以将数据以更清晰的方式展示给用户。在数据可视化不断重要的今天,掌握这类工具,无疑将对开发者的技能提升有所裨益。希望本文能够对你在使用 MPAndroidChart 时有所帮助!