MPchart 曲線圖、柱狀圖、餅圖

一。加入依賴庫,在項目build.gradle下面的dependencies裏面加入:

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

二。因爲網上資源比較多,註釋也比較清楚,就直接貼上所有代碼

1.兩個管理類

public class LineChartManager {

    private LineChart lineChart;
    private YAxis leftAxis;   //左邊Y軸
    private YAxis rightAxis;  //右邊Y軸
    private XAxis xAxis;      //X軸

    public LineChartManager(LineChart mLineChart) {
        this.lineChart = mLineChart;
        leftAxis = lineChart.getAxisLeft();
        rightAxis = lineChart.getAxisRight();
        rightAxis.setDrawLabels(false);//右側Y軸數據不顯示
        xAxis = lineChart.getXAxis();
    }

    /**
     * 初始化LineChart
     */
    private void initLineChart() {
        lineChart.setDrawGridBackground(false);
        //顯示邊界
        lineChart.setDrawBorders(true);

        //設置動畫效果
        lineChart.animateY(1000, Easing.EasingOption.Linear);
        lineChart.animateX(1000, Easing.EasingOption.Linear);

        //折線圖例 標籤 設置
        Legend legend = lineChart.getLegend();
        legend.setForm(Legend.LegendForm.LINE);
        legend.setTextSize(11f);
        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        legend.setDrawInside(false);

        //XY軸的設置
        //X軸設置顯示位置在底部
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setAxisMinimum(0f);
        xAxis.setGranularity(1f);
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);
    }

    /**
     * 初始化曲線 每一個LineDataSet代表一條線
     *
     * @param lineDataSet
     * @param color
     * @param mode        折線圖是否填充
     */
    private void initLineDataSet(LineDataSet lineDataSet, int color, boolean mode) {
        lineDataSet.setColor(color);
        lineDataSet.setCircleColor(color);
        lineDataSet.setLineWidth(1f);
        lineDataSet.setCircleRadius(3f);
        //設置曲線值的圓點是實心還是空心
        lineDataSet.setDrawCircleHole(false);
        lineDataSet.setValueTextSize(9f);
        //設置折線圖填充
        lineDataSet.setDrawFilled(mode);
        lineDataSet.setFormLineWidth(1f);
        lineDataSet.setFormSize(15.f);
        //填充顏色.透明度
//        lineDataSet.setFillColor(Color.BLUE);
        lineDataSet.setFillAlpha(35);
        //線模式爲圓滑曲線(默認折線)
        lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
    }

    /**
     * 展示折線圖(一條)
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showLineChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        initLineChart();
        ArrayList<Entry> entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new Entry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        // 每一個LineDataSet代表一條線
        LineDataSet lineDataSet = new LineDataSet(entries, label);
        initLineDataSet(lineDataSet, color, true);

        ArrayList<ILineDataSet> dataSets = new ArrayList<>();
        dataSets.add(lineDataSet);
        LineData data = new LineData(dataSets);
        //設置X軸的刻度數
        xAxis.setLabelCount(xAxisValues.size(), true);
        lineChart.setData(data);
    }

    /**
     * 展示線性圖(多條)
     *
     * @param xAxisValues
     * @param yAxisValues 多條曲線Y軸數據集合的集合
     * @param labels
     * @param colours
     */
    public void showLineChart(List<Float> xAxisValues, List<List<Float>> yAxisValues, List<String> labels, List<Integer> colours) {
        initLineChart();
        ArrayList<ILineDataSet> dataSets = new ArrayList<>();
        for (int i = 0; i < yAxisValues.size(); i++) {
            ArrayList<Entry> entries = new ArrayList<>();
            for (int j = 0; j < yAxisValues.get(i).size(); j++) {
                if (j >= xAxisValues.size()) {
                    j = xAxisValues.size() - 1;
                }
                entries.add(new Entry(xAxisValues.get(j), yAxisValues.get(i).get(j)));
            }
            LineDataSet lineDataSet = new LineDataSet(entries, labels.get(i));

            initLineDataSet(lineDataSet, colours.get(i), false);
            dataSets.add(lineDataSet);
        }
        LineData data = new LineData(dataSets);
        xAxis.setLabelCount(xAxisValues.size(), true);
        lineChart.setData(data);
    }

    /**
     * 設置Y軸值
     *
     * @param max
     * @param min
     * @param labelCount
     */
    public void setYAxis(float max, float min, int labelCount) {
        if (max < min) {
            return;
        }
        leftAxis.setAxisMaximum(max);
        leftAxis.setAxisMinimum(min);
        leftAxis.setLabelCount(labelCount, false);

        rightAxis.setAxisMaximum(max);
        rightAxis.setAxisMinimum(min);
        rightAxis.setLabelCount(labelCount, false);
        lineChart.invalidate();
    }

    /**
     * 設置X軸的值
     *
     * @param max
     * @param min
     * @param labelCount
     */
    public void setXAxis(float max, float min, int labelCount) {
        xAxis.setAxisMaximum(max);
        xAxis.setAxisMinimum(min);
        xAxis.setLabelCount(labelCount, true);

        lineChart.invalidate();
    }

    /**
     * 設置高限制線
     *
     * @param high
     * @param name
     */
    public void setHightLimitLine(float high, String name, int color) {
        if (name == null) {
            name = "高限制線";
        }
        LimitLine hightLimit = new LimitLine(high, name);
        hightLimit.setLineWidth(2f);
        hightLimit.setTextSize(10f);
        hightLimit.setLineColor(color);
        hightLimit.setTextColor(color);
        leftAxis.addLimitLine(hightLimit);
        lineChart.invalidate();
    }

    /**
     * 設置低限制線
     *
     * @param low
     * @param name
     */
    public void setLowLimitLine(int low, String name) {
        if (name == null) {
            name = "低限制線";
        }
        LimitLine hightLimit = new LimitLine(low, name);
        hightLimit.setLineWidth(4f);
        hightLimit.setTextSize(10f);
        leftAxis.addLimitLine(hightLimit);
        lineChart.invalidate();
    }

    /**
     * 設置描述信息
     *
     * @param str
     */
    public void setDescription(String str) {
        Description description = new Description();
        description.setText(str);
        lineChart.setDescription(description);
        lineChart.invalidate();
    }
}

public class BarChartManager {
    private BarChart mBarChart;
    private YAxis leftAxis;
    private YAxis rightAxis;
    private XAxis xAxis;

    private HorizontalBarChart horizontalBarChart;

    public BarChartManager(BarChart barChart) {
        this.mBarChart = barChart;
        leftAxis = mBarChart.getAxisLeft();
        rightAxis = mBarChart.getAxisRight();
        rightAxis.setDrawLabels(false);//右側Y軸數據不顯示
        xAxis = mBarChart.getXAxis();
    }

    public BarChartManager(HorizontalBarChart barChart) {
        this.horizontalBarChart = barChart;
        leftAxis = horizontalBarChart.getAxisLeft();
        rightAxis = horizontalBarChart.getAxisRight();
        rightAxis.setDrawLabels(false);//右側Y軸數據不顯示
        xAxis = horizontalBarChart.getXAxis();
    }

    /**
     * 初始化LineChart
     */
    private void initLineChart() {
        //背景顏色
        mBarChart.setBackgroundColor(Color.WHITE);
        //網格
        mBarChart.setDrawGridBackground(false);
        //背景陰影
        mBarChart.setDrawBarShadow(false);
        mBarChart.setHighlightFullBarEnabled(false);

        //顯示邊界
        mBarChart.setDrawBorders(true);
        //設置動畫效果
        mBarChart.animateY(1000, Easing.EasingOption.Linear);
        mBarChart.animateX(1000, Easing.EasingOption.Linear);

        //折線圖例 標籤 設置
        Legend legend = mBarChart.getLegend();
        legend.setForm(Legend.LegendForm.LINE);
        legend.setTextSize(11f);
        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        legend.setDrawInside(false);

        //XY軸的設置
        //X軸設置顯示位置在底部
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setGranularity(1f);
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);
    }

    /**
     * 初始化LineChart
     */
    private void initHorizontalBarChart() {
        //背景顏色
        horizontalBarChart.setBackgroundColor(Color.WHITE);
        //網格
        horizontalBarChart.setDrawGridBackground(false);
        //背景陰影
        horizontalBarChart.setDrawBarShadow(false);
        horizontalBarChart.setHighlightFullBarEnabled(false);

        //顯示邊界
        horizontalBarChart.setDrawBorders(true);
        //設置動畫效果
        horizontalBarChart.animateY(1000, Easing.EasingOption.Linear);
        horizontalBarChart.animateX(1000, Easing.EasingOption.Linear);

        //折線圖例 標籤 設置
        Legend legend = horizontalBarChart.getLegend();
        legend.setForm(Legend.LegendForm.LINE);
        legend.setTextSize(11f);
        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        legend.setDrawInside(false);

        //XY軸的設置
        //X軸設置顯示位置在底部
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setGranularity(1f);
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);
    }

    /**
     * 展示柱狀圖(一條)
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showBarChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        initLineChart();
        ArrayList<BarEntry> entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new BarEntry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        // 每一個BarDataSet代表一類柱狀圖
        BarDataSet barDataSet = new BarDataSet(entries, label);

        barDataSet.setColor(color);
        barDataSet.setValueTextSize(9f);
        barDataSet.setFormLineWidth(1f);
        barDataSet.setFormSize(15.f);

        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(barDataSet);
        BarData data = new BarData(dataSets);
        //設置X軸的刻度數
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        mBarChart.setData(data);
    }

    /**
     * 展示柱狀圖(一條/橫向)
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showHorizontalBarChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        initHorizontalBarChart();
        ArrayList<BarEntry> entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new BarEntry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        // 每一個BarDataSet代表一類柱狀圖
        BarDataSet barDataSet = new BarDataSet(entries, label);

        barDataSet.setColor(color);
        barDataSet.setValueTextSize(9f);
        barDataSet.setFormLineWidth(1f);
        barDataSet.setFormSize(15.f);

        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(barDataSet);
        BarData data = new BarData(dataSets);
        //設置X軸的刻度數
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        horizontalBarChart.setData(data);
    }

    /**
     * 展示柱狀圖(多條)
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param labels
     * @param colours
     */
    public void showBarChart(List<Float> xAxisValues, List<List<Float>> yAxisValues, List<String> labels, List<Integer> colours) {
        initLineChart();
        BarData data = new BarData();
        for (int i = 0; i < yAxisValues.size(); i++) {
            ArrayList<BarEntry> entries = new ArrayList<>();
            for (int j = 0; j < yAxisValues.get(i).size(); j++) {

                entries.add(new BarEntry(xAxisValues.get(j), yAxisValues.get(i).get(j)));
            }
            BarDataSet barDataSet = new BarDataSet(entries, labels.get(i));

            barDataSet.setColor(colours.get(i));
            barDataSet.setValueTextColor(colours.get(i));
            barDataSet.setValueTextSize(10f);
            barDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
            data.addDataSet(barDataSet);
        }
        int amount = yAxisValues.size();

        float groupSpace = 0.12f; //柱狀圖組之間的間距
        float barSpace = (float) ((1 - 0.12) / amount / 10); // x4 DataSet
        float barWidth = (float) ((1 - 0.12) / amount / 10 * 9); // x4 DataSet

        // (0.2 + 0.02) * 4 + 0.08 = 1.00 -> interval per "group"
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        data.setBarWidth(barWidth);


        data.groupBars(0, groupSpace, barSpace);
        mBarChart.setData(data);
    }


    /**
     * 設置Y軸值
     *
     * @param max
     * @param min
     * @param labelCount
     */
    public void setYAxis(float max, float min, int labelCount) {
        if (max < min) {
            return;
        }
        leftAxis.setAxisMaximum(max);
        leftAxis.setAxisMinimum(min);
        leftAxis.setLabelCount(labelCount, false);

        rightAxis.setAxisMaximum(max);
        rightAxis.setAxisMinimum(min);
        rightAxis.setLabelCount(labelCount, false);
        if (mBarChart != null) {
            mBarChart.invalidate();
        }
        if (horizontalBarChart != null) {
            horizontalBarChart.invalidate();
        }
    }

    /**
     * 設置X軸的值
     *
     * @param max
     * @param min
     * @param labelCount
     */
    public void setXAxis(float max, float min, int labelCount) {
        xAxis.setAxisMaximum(max);
        xAxis.setAxisMinimum(min);
        xAxis.setLabelCount(labelCount, false);
        if (mBarChart != null) {
            mBarChart.invalidate();
        }
        if (horizontalBarChart != null) {
            horizontalBarChart.invalidate();
        }
    }

    /**
     * 設置高限制線
     *
     * @param high
     * @param name
     */
    public void setHightLimitLine(float high, String name, int color) {
        if (name == null) {
            name = "高限制線";
        }
        LimitLine hightLimit = new LimitLine(high, name);
        hightLimit.setLineWidth(4f);
        hightLimit.setTextSize(10f);
        hightLimit.setLineColor(color);
        hightLimit.setTextColor(color);
        leftAxis.addLimitLine(hightLimit);
        mBarChart.invalidate();
    }

    /**
     * 設置低限制線
     *
     * @param low
     * @param name
     */
    public void setLowLimitLine(int low, String name) {
        if (name == null) {
            name = "低限制線";
        }
        LimitLine hightLimit = new LimitLine(low, name);
        hightLimit.setLineWidth(4f);
        hightLimit.setTextSize(10f);
        leftAxis.addLimitLine(hightLimit);
        mBarChart.invalidate();
    }

    /**
     * 設置描述信息
     *
     * @param str
     */
    public void setDescription(String str) {
        Description description = new Description();
        description.setText(str);
        if (mBarChart != null) {
            mBarChart.setDescription(description);
            mBarChart.invalidate();
        }
        if (horizontalBarChart != null) {
            horizontalBarChart.setDescription(description);
            horizontalBarChart.invalidate();
        }
    }
}

2.MAinActivity裏面使用:

public class MainActivity extends AppCompatActivity {
    public static final String TAG = "MainActivity";
    //曲線圖
    private LineChart lineChart1;//曲線圖帶限制線
    private LineChartManager lineChartManager1;
    private LineChart lineChart2;//多條曲線
    private LineChartManager lineChartManager2;
    //柱狀圖
    private BarChart barChart1;//縱向
    private BarChartManager barChartManager1;
    private BarChart barChart2;
    private BarChartManager barChartManager2;
    private HorizontalBarChart horizontalBarChart;//橫向
    private BarChartManager barChartManager3;

    //餅狀圖
    private PieChart pieChart1;

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

        initView();
        setLineChartData();
        //柱狀圖
        setBarChart();
        //餅狀圖
        setPieChart();
    }

    private void setPieChart() {
        pieChart1.setUsePercentValues(true);//使用百分百顯示
        pieChart1.setDrawCenterText(true);
        pieChart1.setCenterText("中間文字");
        pieChart1.setCenterTextColor(Color.BLUE);
        pieChart1.setCenterTextSize(16f);
        pieChart1.setDrawHoleEnabled(true);//是否顯示圓環中間的洞
        pieChart1.setHoleColor(Color.CYAN);//中間洞的顏色
        pieChart1.setHoleRadius(20f);//設置圓環中間洞的半徑
        // 設置圓環透明度及半徑
        pieChart1.setTransparentCircleColor(Color.YELLOW);
        pieChart1.setTransparentCircleAlpha(110);
        pieChart1.setTransparentCircleRadius(40);
        pieChart1.setRotationEnabled(true);//設置圓盤是否轉動,默認轉動
        pieChart1.setRotationAngle(0);//轉動角度
        pieChart1.setRotationEnabled(true);//觸摸旋轉
        pieChart1.setRotationAngle(20);//旋轉角度
        Description description = new Description();
        description.setText("餅圖測試!");//右下角顯示名稱
        pieChart1.setDescription(description);
        //比例圖
        Legend legend = pieChart1.getLegend();
        legend.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT);//位置
        legend.setForm(Legend.LegendForm.CIRCLE);//形狀
        //設置X軸動畫
        pieChart1.animateX(1500);
        setData(5);

    }

    /**
     * 餅圖數據
     *
     * @param count
     */
    private void setData(int count) {
        //每塊文字
        ArrayList<String> names = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            names.add(i + 1 + "小塊");
        }
        //每塊名稱及百分比
        ArrayList<PieEntry> values = new ArrayList<>();
        values.add(new PieEntry(15, names.get(0)));
        values.add(new PieEntry(35, names.get(1)));
        values.add(new PieEntry(40, names.get(2)));
        values.add(new PieEntry(10, names.get(3)));
        //顯示在比例圖上
        PieDataSet dataSet = new PieDataSet(values, "顏色指示");
        //設置各餅狀圖之間的距離
        dataSet.setSliceSpace(3f);
        // 部分區域被選中時多出的長度
        dataSet.setSelectionShift(5f);

        // 設置餅圖各個區域顏色
        ArrayList<Integer> colors = new ArrayList<Integer>();
        colors.add(Color.RED);
        colors.add(Color.GREEN);
        colors.add(Color.BLUE);
        colors.add(Color.CYAN);
        dataSet.setColors(colors);

        PieData data = new PieData(dataSet);
        //設置以百分比顯示
        data.setValueFormatter(new PercentFormatter());
        //區域文字的大小
        data.setValueTextSize(16f);
        //設置區域文字的顏色
        data.setValueTextColor(Color.BLACK);
        //設置區域文字的字體
        data.setValueTypeface(Typeface.DEFAULT);
        pieChart1.setData(data);

        //設置是否顯示區域文字內容
//        pieChart1.setDrawSliceText(pieChart1.isDrawCenterTextEnabled());
        //設置是否顯示區域百分比的值
//        for (IDataSet<?> set : pieChart1.getData().getDataSets()) {
//            set.setDrawValues(!set.isDrawValuesEnabled());
//        }
        // undo all highlights
        pieChart1.highlightValues(null);
        pieChart1.invalidate();
    }


    private void setBarChart() {
        //設置X軸數據
        ArrayList<Float> xValues = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            xValues.add((float) i);
        }
        //設置Y軸數據
        List<List<Float>> yValues = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            List<Float> yValue = new ArrayList<>();
            //一條柱狀圖模擬數據
            for (int j = 0; j < 6; j++) {
                yValue.add((float) (Math.random() * 80));
            }
            yValues.add(yValue);
        }
        //顏色集合
        List<Integer> colors = new ArrayList<>();
        colors.add(Color.RED);
        colors.add(Color.GREEN);
        colors.add(Color.CYAN);
        //線的名字集合
        List<String> names = new ArrayList<>();
        names.add("柱狀圖");
        names.add("柱狀圖2");
        names.add("柱狀圖3");

        //X軸顯示字符串------->>
        final List<String> mList = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            mList.add(i + 1 + "月");
        }
        XAxis xAxis = barChart1.getXAxis();
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return mList.get((int) value); //mList爲存有月份的集合
            }
        });
        //X軸顯示字符串-------<<
        //顯示單條柱狀圖
        barChartManager1.showBarChart(xValues, yValues.get(0), names.get(0), colors.get(0));
        barChartManager1.setDescription("柱狀溫度圖");
        barChartManager1.setYAxis(100, 0, 11);
        //顯示柱狀組圖
        barChartManager2.showBarChart(xValues, yValues, names, colors);
        barChartManager2.setDescription("柱狀組溫度圖");
        barChartManager2.setYAxis(100, 0, 11);
        barChartManager2.setXAxis(6f, 0f, 6);
        //橫向柱狀圖
        barChartManager3.showHorizontalBarChart(xValues, yValues.get(0), "橫向柱狀圖", colors.get(0));
        barChartManager3.setXAxis(6f, 0f, 6);
        barChartManager3.setYAxis(100f, 0f, 11);
        barChartManager3.setDescription("溫度");

    }

    private void initView() {
        lineChart1 = findViewById(R.id.line_chart);
        lineChartManager1 = new LineChartManager(lineChart1);
        lineChart2 = findViewById(R.id.line_chart2);
        lineChartManager2 = new LineChartManager(lineChart2);

        barChart1 = findViewById(R.id.bar_chart1);
        barChartManager1 = new BarChartManager(barChart1);
        barChart2 = findViewById(R.id.bar_chart2);
        barChartManager2 = new BarChartManager(barChart2);
        horizontalBarChart = findViewById(R.id.horizontal_bar_chart);
        barChartManager3 = new BarChartManager(horizontalBarChart);

        pieChart1 = findViewById(R.id.pie_chart1);
    }

    private void setLineChartData() {
        //設置X軸數據
        ArrayList<Float> xValues = new ArrayList<>();
        for (int i = 0; i < 12; i++) {
            xValues.add((float) i);
        }
        //設置Y軸數據
        List<List<Float>> yValues = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            List<Float> yValue = new ArrayList<>();
            //一條曲線模擬數據
            for (int j = 0; j < 12; j++) {
                yValue.add((float) (Math.random() * 80));
            }
            yValues.add(yValue);
        }
        //顏色集合
        List<Integer> colors = new ArrayList<>();
        colors.add(Color.BLUE);
        colors.add(Color.RED);
        colors.add(Color.GREEN);
        colors.add(Color.CYAN);
        //線的名字集合
        List<String> names = new ArrayList<>();
        names.add("一條溫度曲線圖");
        names.add("溫度曲線圖2");
        names.add("溫度曲線圖3");
        names.add("溫度曲線圖4");
        //設置數據並顯示一條曲線
        lineChartManager1.showLineChart(xValues, yValues.get(0), names.get(0), colors.get(0));
        lineChartManager1.setDescription("溫度");
        //Y軸0-100 分10格
        lineChartManager1.setYAxis(100, 0, 11);
        //警戒線80 紅色
        lineChartManager1.setHightLimitLine(80, "高溫報警", Color.RED);

        lineChart1.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, Highlight h) {
//                Log.e(TAG, "----e:" + e.toString());
            }

            @Override
            public void onNothingSelected() {

            }
        });

        //顯示多條曲線
//        lineChart2.setBackgroundColor(Color.GRAY);//表格背景
        lineChartManager2.showLineChart(xValues, yValues, names, colors);
        lineChartManager2.setYAxis(100, 0, 11);
        lineChartManager2.setDescription("多條溫度曲線圖");
    }
}

3.xml佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mpchart.MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="lineChart1:曲線圖帶限制線..." />

            <com.github.mikephil.charting.charts.LineChart
                android:id="@+id/line_chart"
                android:layout_width="match_parent"
                android:layout_height="300dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="lineChart2:多條曲線圖...." />

            <com.github.mikephil.charting.charts.LineChart
                android:id="@+id/line_chart2"
                android:layout_width="match_parent"
                android:layout_height="300dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="單條柱狀圖...." />

            <com.github.mikephil.charting.charts.BarChart
                android:id="@+id/bar_chart1"
                android:layout_width="match_parent"
                android:layout_height="300dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="橫向柱狀圖...." />

            <com.github.mikephil.charting.charts.HorizontalBarChart
                android:id="@+id/horizontal_bar_chart"
                android:layout_width="match_parent"
                android:layout_height="300dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="柱狀組圖...." />

            <com.github.mikephil.charting.charts.BarChart
                android:id="@+id/bar_chart2"
                android:layout_width="match_parent"
                android:layout_height="300dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="餅狀圖..." />

            <com.github.mikephil.charting.charts.PieChart
                android:id="@+id/pie_chart1"
                android:layout_width="match_parent"
                android:layout_height="300dp" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>
有問題可以聯繫我或網上找答案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章