美滋滋的數據可視化——使用mpchart實現

一、mpchart簡介

mpchart是一款基於開源圖表庫「MPAndroidChart」開發的Android 繪圖工具庫。它的優點是使用方便、功能強大,支持多種類型的圖表,並且支持詳細的圖表定製和交互效果

在使用mpchart之前,需要在項目的gradle配置文件中引入mpchart的依賴:

“`
dependencies {
implementation ‘com.github.PhilJay:MPAndroidChart:v3.1.0-alpha’
}
“`

二、mpchart的使用

1.折線圖的繪製

以下代碼實現了一個簡單的折線圖的繪製,其中比較重要的參數和函數有:

  • LineChart: 折線圖的控制項
  • setDescription: 設置折線圖的描述, 默認為「Description」
  • setTouchEnabled: 是否可觸摸, 默認為true
  • setDragEnabled: 是否可拖拽, 默認為true
  • setScaleEnabled: 是否可縮放, 默認為true
  • setPinchZoom: 是否同時縮放x、y軸, 默認為false
  • getXAxis().setValueFormatter: X軸的數值格式化
  • getYAxis().setValueFormatter: Y軸的數值格式化
  • addDataEntry: 添加數據
  • notifyDataSetChanged: 通知數據集改變
  • animateXY: 設置初始動畫

public void setupLineChart(LineChart lineChart) {
        lineChart.setDescription("這是折線圖的描述");
        lineChart.setTouchEnabled(true);
        lineChart.setDragEnabled(true);
        lineChart.setScaleEnabled(true);
        lineChart.setPinchZoom(false);

        XAxis xAxis = lineChart.getXAxis();
        // 設置X軸的數值格式
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return "Day " + (int) value;
            }
        });

        // 設置Y軸格式
        YAxis yAxis = lineChart.getAxisLeft();
        yAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return value + "元";
            }
        });


        List entries = new ArrayList();
        entries.add(new Entry(1, 23));
        entries.add(new Entry(2, 53));
        entries.add(new Entry(3, 31));
        entries.add(new Entry(4, 54));
        entries.add(new Entry(5, 75));

        LineDataSet lineDataSet = new LineDataSet(entries, "這是折線的描述");
        lineDataSet.setColor(Color.RED);
        lineDataSet.setCircleColor(Color.BLUE);
        lineDataSet.setLineWidth(2f);
        lineDataSet.setCircleRadius(4f);
        lineDataSet.setDrawCircles(true);
        lineDataSet.setDrawValues(true);

        LineData lineData = new LineData(lineDataSet);
        lineChart.setData(lineData);
        lineChart.notifyDataSetChanged();
        lineChart.animateXY(2000, 2000);
    }

2.柱狀圖的繪製

以下代碼實現了一個簡單的柱狀圖的繪製,其中比較重要的參數和函數有:

  • BarChart: 柱狀圖的控制項
  • setDescription: 設置柱狀圖的描述, 默認為「Description」
  • setTouchEnabled: 是否可觸摸, 默認為true
  • setDragEnabled: 是否可拖拽, 默認為true
  • setScaleEnabled: 是否可縮放, 默認為true
  • setPinchZoom: 是否同時縮放x、y軸, 默認為false
  • XAxis: X軸參數設置
  • YAxis: Y軸參數設置
  • BarEntry: 柱狀圖數據添加
  • notifyDataSetChanged: 通知數據集改變
  • animateXY: 設置初始動畫

public void setupBarChart(BarChart barChart) {

        barChart.setDescription("這是柱狀圖的描述");
        barChart.setTouchEnabled(true);
        barChart.setDragEnabled(true);
        barChart.setScaleEnabled(true);
        barChart.setPinchZoom(false);

        XAxis xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setDrawAxisLine(true);
        xAxis.setDrawLabels(true);

        YAxis leftAxis = barChart.getAxisLeft();
        leftAxis.setAxisMinValue(0f);
        leftAxis.setDrawGridLines(true);
        leftAxis.setDrawLabels(true);
        leftAxis.setDrawAxisLine(true);

        YAxis rightAxis = barChart.getAxisRight();
        rightAxis.setAxisMinValue(0f);
        rightAxis.setDrawGridLines(false);
        rightAxis.setDrawLabels(false);
        rightAxis.setDrawAxisLine(false);

        ArrayList entries1 = new ArrayList();
        entries1.add(new BarEntry(1, 69f));
        entries1.add(new BarEntry(2, 45f));
        entries1.add(new BarEntry(3, 87f));
        entries1.add(new BarEntry(4, 23f));
        entries1.add(new BarEntry(5, 56f));


        BarDataSet set1 = new BarDataSet(entries1, "這是第一組數據");
        set1.setColor(Color.rgb(104, 241, 175));
        set1.setValueTextSize(10f);

        ArrayList dataSets = new ArrayList();
        dataSets.add(set1);

        BarData data = new BarData(dataSets);
        data.setValueFormatter(new LargeValueFormatter());
        barChart.setData(data);
        barChart.notifyDataSetChanged();
        barChart.animateXY(2000, 2000);
    }

3.餅狀圖的繪製

以下代碼實現了一個簡單的餅狀圖的繪製,其中比較重要的參數和函數有:

  • PieChart: 餅狀圖的控制項
  • setDescription: 設置餅狀圖的描述, 默認為「Description」
  • setTouchEnabled: 是否可觸摸, 默認為true
  • setDragEnabled: 是否可拖拽, 默認為true
  • setScaleEnabled: 是否可縮放, 默認為true
  • setPinchZoom: 是否同時縮放x、y軸, 默認為false
  • PieEntry: 餅狀圖數據添加
  • notifyDataSetChanged: 通知數據集改變
  • animateXY: 設置初始動畫

public void setupPieChart(PieChart pieChart) {
        pieChart.setDescription("這是餅狀圖的描述");
        pieChart.setTouchEnabled(true);
        pieChart.setDragEnabled(true);
        pieChart.setScaleEnabled(true);
        pieChart.setPinchZoom(false);

        ArrayList entries = new ArrayList();
        entries.add(new PieEntry(48, "1月"));
        entries.add(new PieEntry(23, "2月"));
        entries.add(new PieEntry(18, "3月"));
        entries.add(new PieEntry(25, "4月"));

        PieDataSet dataSet = new PieDataSet(entries, "這是餅狀圖的描述");
        ArrayList colors = new ArrayList();
        colors.add(Color.rgb(241, 77, 116));
        colors.add(Color.rgb(61, 165, 255));
        colors.add(Color.rgb(51, 204, 51));
        colors.add(Color.rgb(255, 204, 0));
        dataSet.setColors(colors);
        dataSet.setSliceSpace(3f);
        dataSet.setSelectionShift(5f);

        PieData pieData = new PieData(dataSet);
        pieData.setValueFormatter(new PercentFormatter());
        pieData.setValueTextSize(16f);
        pieData.setValueTextColor(Color.WHITE);

        pieChart.setData(pieData);
        pieChart.notifyDataSetChanged();
        pieChart.animateXY(2000, 2000);
    }

三、總結

本文介紹了mpchart工具庫的使用方法,並且通過三個實例分別展示了折線圖、柱狀圖和餅狀圖的繪製過程。掌握mpchart的使用可以幫助我們在開發中更加靈活地展示數據,並提高用戶對數據的理解與認識。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247234.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:19
下一篇 2024-12-12 13:19

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29

發表回復

登錄後才能評論