天天看點

MPAndroidChart柱狀圖,折線圖

參考資料:

https://github.com/PhilJay/MPAndroidChart

引用庫

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

柱狀類

import android.graphics.Color;

import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.formatter.ValueFormatter;

import java.util.ArrayList;
import java.util.List;


public class BarCharDkey {
    private BarChart barChart;
    private YAxis leftAxis; //左側Y軸
    private YAxis rightAxis; //右側Y軸
    private XAxis xAxis; //X軸
    private Legend legend; //圖例
    private LimitLine limitLine; //限制線
    protected final String[] months = new String[] {
            "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
    };

    public BarCharDkey(BarChart chart) {
        barChart = chart;
        //背景顔色
        barChart.setBackgroundColor(Color.TRANSPARENT);
        //不顯示圖表網格
        barChart.setDrawGridBackground(false);

        //設定圖表描述資訊
        Description description = new Description();
        description.setText("");
        barChart.getDescription().setEnabled(false);
        barChart.setDescription(description);

        //設定 chart 邊框線的顔色。
        barChart.setBorderColor(Color.TRANSPARENT);
        //禁止縮放
        barChart.setScaleEnabled(false);

        //背景陰影
        barChart.setDrawBarShadow(false);
        barChart.setHighlightFullBarEnabled(false);
        //顯示邊框
        barChart.setDrawBorders(true);
        //設定動畫效果
        barChart.animateY(1000, Easing.Linear);
        barChart.animateX(1000, Easing.Linear);


        //X軸設定顯示位置在底部
        xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //單個時可微調-0.5f
        xAxis.setAxisMinimum(-0.5f);
        xAxis.setGranularity(0f);
        xAxis.setTextColor(Color.WHITE);
        xAxis.setTextSize(14.0f);
        //隐藏X軸豎網格線
        xAxis.setDrawGridLines(false);
        xAxis.setDrawAxisLine(true);
        xAxis.setAxisLineColor(Color.WHITE);
        xAxis.setGridColor(Color.TRANSPARENT);
        xAxis.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return months[(int) value % months.length];
            }
        });


        leftAxis = barChart.getAxisLeft();
        rightAxis = barChart.getAxisRight();
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);

        //邊線顔色
        rightAxis.setAxisLineColor(Color.WHITE);
        leftAxis.setAxisLineColor(Color.WHITE);
        rightAxis.setTextColor(Color.WHITE);
        leftAxis.setTextColor(Color.WHITE);
        leftAxis.setTextSize(14.0f);
        rightAxis.setTextSize(14.0f);
        //隐藏左邊坐标軸橫網格線
        leftAxis.setDrawGridLines(false);
        //隐藏右邊坐标軸橫網格線
        rightAxis.setDrawGridLines(false);

        //隐藏右邊資料
        rightAxis.setEnabled(false);

        legend = barChart.getLegend();
        legend.setForm(Legend.LegendForm.SQUARE);
        legend.setFormSize(16.0f);
        legend.setTextSize(16.0f);
        legend.setTextColor(Color.WHITE);
        //設定X軸上條目的間隔,預設為6dp
        legend.setXEntrySpace(20);

        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        //是否繪制在圖表裡面
        legend.setDrawInside(false);

    }


    /**
     * 單個柱狀加載資料
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showBarChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        //将資料源添加到圖示
        ArrayList entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new BarEntry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        BarDataSet barDataSet = new BarDataSet(entries, label);
        //設定柱狀圖顔色
        barDataSet.setColor(color);
        //設定數值字型大小
        barDataSet.setValueTextSize(16f);
        barDataSet.setValueTextColor(Color.WHITE);
        //線條寬度
        barDataSet.setFormLineWidth(1f);
        //圖例窗體的大小
//        barDataSet.setFormSize(15.f);
        ArrayList dataSets = new ArrayList<>();
        dataSets.add(barDataSet);
        BarData data = new BarData(dataSets);
        //柱狀寬度
        data.setBarWidth(0.5f);
        //設定X軸的刻度數
        xAxis.setLabelCount(entries.size() - 1, false);
        barChart.setData(data);
    }

    /**
     * 多個柱狀加載資料
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     * @param type 0手機;1電腦
     */
    public void showBarChart(List<Float> xAxisValues, List<List<Float>> yAxisValues, List<String> label, List<Integer> color,int type) {
        ArrayList dataSets = new ArrayList<>();
        BarData data = new BarData();
        for (int i = 0; i < yAxisValues.size(); i++) {
            ArrayList 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, label.get(i));
            //設定柱狀圖顔色
            barDataSet.setColor(color.get(i));
            //設定數值字型大小
            barDataSet.setValueTextSize(18f);
            barDataSet.setValueTextColor(Color.WHITE);
            //線條寬度
            barDataSet.setFormLineWidth(2f);
            //格式化x軸标簽顯示字元
            if (type == 0) {
                if (i == 0) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            return String.valueOf((int)value);
                        }
                    });
                } else if (i == 1) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            if (value == 0) {
                                return "0";
                            } else if ((value - (int) value) > 0) {
                                return value + "h";
                            } else {
                                return (int) value + "h";
                            }
                        }
                    });
                }
            } else if (type == 1) {
                barDataSet.setValueFormatter(new ValueFormatter() {
                    @Override
                    public String getFormattedValue(float value) {
                        if (value == 0) {
                            return "0";
                        } else if ((value - (int) value) > 0) {
                            return value + "h";
                        } else {
                            return (int) value + "h";
                        }
                    }
                });
            }

            data.addDataSet(barDataSet);
        }
        int amount = yAxisValues.size();
        //柱狀圖組之間的間距
        float groupSpace = 0.2f;
        float barSpace = 0.00f;
        float barWidth = 0.4f;
        //設定x軸顯示标簽數量
        // (0.45 + 0.02) * 2 + 0.06 = 1.00 -> interval per "group"
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        data.setBarWidth(barWidth);
        data.groupBars(-0.5f, groupSpace, barSpace);
        // 添加到圖表中
        barChart.setData(data);
    }


}
           

線性類

import android.graphics.Color;

import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IValueFormatter;
import com.github.mikephil.charting.formatter.ValueFormatter;
import com.github.mikephil.charting.utils.ViewPortHandler;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;


public class LineChartDkey {
    private LineChart mLineChart;
    private YAxis leftAxis; //左側Y軸
    private YAxis rightAxis; //右側Y軸
    private XAxis xAxis; //X軸
    private Legend legend; //圖例
    private LimitLine limitLine; //限制線
    public static String[] days = null;

    public LineChartDkey(LineChart chart) {
        mLineChart = chart;
        //背景顔色
        mLineChart.setBackgroundColor(Color.TRANSPARENT);
        //不顯示圖表網格
        mLineChart.setDrawGridBackground(false);

        mLineChart.setNoDataText("");
        //設定圖表描述資訊
        Description description = new Description();
        description.setText("");
        mLineChart.getDescription().setEnabled(false);
        mLineChart.setDescription(description);
        //設定 chart 邊框線的顔色。
        mLineChart.setBorderColor(Color.TRANSPARENT);
        //禁止縮放
        mLineChart.setScaleEnabled(false);

        //顯示邊框
        mLineChart.setDrawBorders(true);
        //設定動畫效果
        mLineChart.animateY(1000, Easing.Linear);
        mLineChart.animateX(1000, Easing.Linear);


        //X軸設定顯示位置在底部
        xAxis = mLineChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //單個時可微調-0.5f
        xAxis.setAxisMinimum(0f);
        xAxis.setGranularity(0f);
        xAxis.setTextColor(Color.WHITE);
        xAxis.setTextSize(14.0f);
        //隐藏X軸豎網格線
        xAxis.setDrawGridLines(false);
        xAxis.setDrawAxisLine(true);
        xAxis.setAxisLineColor(Color.WHITE);
        xAxis.setGridColor(Color.TRANSPARENT);
        xAxis.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return days[(int) value % days.length];
            }
        });


        leftAxis = mLineChart.getAxisLeft();
        rightAxis = mLineChart.getAxisRight();
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);

        //邊線顔色
        rightAxis.setAxisLineColor(Color.WHITE);
        leftAxis.setAxisLineColor(Color.WHITE);
        rightAxis.setTextColor(Color.WHITE);
        leftAxis.setTextColor(Color.WHITE);
        leftAxis.setTextSize(14.0f);
        rightAxis.setTextSize(14.0f);
        //隐藏左邊坐标軸橫網格線
        leftAxis.setDrawGridLines(false);
        //隐藏右邊坐标軸橫網格線
        rightAxis.setDrawGridLines(false);

        //隐藏右邊資料
        rightAxis.setEnabled(false);

        legend = mLineChart.getLegend();
        legend.setForm(Legend.LegendForm.SQUARE);
        legend.setFormSize(16.0f);
        legend.setTextSize(16.0f);
        legend.setTextColor(Color.WHITE);
        //設定X軸上條目的間隔,預設為6dp
        legend.setXEntrySpace(20);

        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        //是否繪制在圖表裡面
        legend.setDrawInside(false);

    }


    /**
     * 單個柱狀加載資料
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showLineChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        //将資料源添加到圖示
        ArrayList entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new BarEntry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        LineDataSet barDataSet = new LineDataSet(entries, label);
        //設定柱狀圖顔色
        barDataSet.setColor(color);
        //設定數值字型大小
        barDataSet.setValueTextSize(16f);
        barDataSet.setValueTextColor(Color.RED);
        //線條寬度
        barDataSet.setFormLineWidth(1f);
        //圖例窗體的大小
//        barDataSet.setFormSize(15.f);
        ArrayList dataSets = new ArrayList<>();
        dataSets.add(barDataSet);
        LineData data = new LineData(dataSets);
        //設定X軸的刻度數
        xAxis.setLabelCount(entries.size() - 1, false);
        mLineChart.setData(data);
    }

    /**
     * 多個線性加載資料
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     * @param type 0手機;1電腦
     */
    public void showLineChart(List<Float> xAxisValues, List<List<Float>> yAxisValues, List<String> label, List<Integer> color,int type) {
        ArrayList dataSets = new ArrayList<>();
        LineData data = new LineData();
        for (int i = 0; i < yAxisValues.size(); i++) {
            ArrayList 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)));
            }
            LineDataSet barDataSet = new LineDataSet(entries, label.get(i));
            //設定柱狀圖顔色
            barDataSet.setColor(color.get(i));
            //設定數值字型大小
            barDataSet.setValueTextSize(20f);
            barDataSet.setValueTextColor(Color.WHITE);
            //線條寬度
            barDataSet.setFormLineWidth(2f);
            //設定使用 範圍背景填充
            barDataSet.setDrawFilled(true);
            //設定曲線值的圓點是實心還是空心
            barDataSet.setDrawCircleHole(true);
            barDataSet.setCircleColor(color.get(i));
            //設定焦點圓心的大小
            barDataSet.setCircleRadius(4f);
            格式化x軸标簽顯示字元
            if (type == 0) {
                if (i == 0) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            return String.valueOf((int)value);
                        }
                    });
                } else if (i == 1) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            if (value == 0) {
                                return "0";
                            } else if ((value - (int) value) > 0) {
                                return value + "h";
                            } else {
                                return (int) value + "h";
                            }
                        }
                    });
                }
            } else if (type == 1) {
                barDataSet.setValueFormatter(new ValueFormatter() {
                    @Override
                    public String getFormattedValue(float value) {
                        if (value == 0) {
                            return "0";
                        } else if ((value - (int) value) > 0) {
                            return value + "h";
                        } else {
                            return (int) value + "h";
                        }
                    }
                });
            }

            data.addDataSet(barDataSet);
        }
        //設定x軸顯示标簽數量
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        // 添加到圖表中
        mLineChart.setData(data);
    }


}
           

橫向柱狀圖 

import android.graphics.Color;

import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.formatter.ValueFormatter;

import java.util.ArrayList;
import java.util.List;


public class HbarCharDkey {

    private BarChart barChart;
    private YAxis leftAxis; //左側Y軸
    private YAxis rightAxis; //右側Y軸
    private XAxis xAxis; //X軸
    private Legend legend; //圖例
    private LimitLine limitLine; //限制線
    public String[] months = null;

    public HbarCharDkey(BarChart chart) {
        barChart = chart;
        //背景顔色
        barChart.setBackgroundColor(Color.TRANSPARENT);
        //不顯示圖表網格
        barChart.setDrawGridBackground(false);

        //設定圖表描述資訊
        Description description = new Description();
        description.setText("");
        barChart.getDescription().setEnabled(false);
        barChart.setDescription(description);

        //設定 chart 邊框線的顔色。
        barChart.setBorderColor(Color.TRANSPARENT);
        //禁止縮放
        barChart.setScaleEnabled(false);

        //背景陰影
        barChart.setDrawBarShadow(false);
        barChart.setHighlightFullBarEnabled(false);
        //顯示邊框
        barChart.setDrawBorders(true);
        //設定動畫效果
        barChart.animateY(1000, Easing.Linear);
        barChart.animateX(1000, Easing.Linear);


        //X軸設定顯示位置在底部
        xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //單個時可微調-0.5f
        xAxis.setAxisMinimum(-0.5f);
        xAxis.setGranularity(0f);
        xAxis.setTextColor(Color.WHITE);
        xAxis.setTextSize(14.0f);
        //隐藏X軸豎網格線
        xAxis.setDrawGridLines(false);
        xAxis.setDrawAxisLine(true);
        xAxis.setAxisLineColor(Color.WHITE);
        xAxis.setGridColor(Color.TRANSPARENT);
        xAxis.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return months[(int) value % months.length];
            }
        });


        leftAxis = barChart.getAxisLeft();
        rightAxis = barChart.getAxisRight();
        //保證Y軸從0開始,不然會上移一點
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);

        //邊線顔色
        rightAxis.setAxisLineColor(Color.WHITE);
        leftAxis.setAxisLineColor(Color.WHITE);
        rightAxis.setTextColor(Color.WHITE);
        leftAxis.setTextColor(Color.WHITE);
        leftAxis.setTextSize(14.0f);
        rightAxis.setTextSize(14.0f);
        //隐藏左邊坐标軸橫網格線
        leftAxis.setDrawGridLines(false);
        //隐藏右邊坐标軸橫網格線
        rightAxis.setDrawGridLines(false);

        //隐藏右邊資料
        rightAxis.setEnabled(false);

        legend = barChart.getLegend();
        legend.setForm(Legend.LegendForm.SQUARE);
        legend.setFormSize(16.0f);
        legend.setTextSize(16.0f);
        legend.setTextColor(Color.WHITE);
        //設定X軸上條目的間隔,預設為6dp
        legend.setXEntrySpace(20);

        //顯示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        //是否繪制在圖表裡面
        legend.setDrawInside(false);
        legend.setEnabled(false);

    }


    /**
     * 單個柱狀加載資料
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     */
    public void showBarChart(List<Float> xAxisValues, List<Float> yAxisValues, String label, int color) {
        //将資料源添加到圖示
        ArrayList entries = new ArrayList<>();
        for (int i = 0; i < xAxisValues.size(); i++) {
            entries.add(new BarEntry(xAxisValues.get(i), yAxisValues.get(i)));
        }
        BarDataSet barDataSet = new BarDataSet(entries, label);
        //設定柱狀圖顔色
        barDataSet.setColor(color);
        //設定數值字型大小
        barDataSet.setValueTextSize(16f);
        barDataSet.setValueTextColor(Color.WHITE);
        //線條寬度
        barDataSet.setFormLineWidth(1f);
        barDataSet.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                if (value == 0) {
                    return "0";
                } else if ((value - (int) value) > 0) {
                    return value + "h";
                } else {
                    return (int) value + "h";
                }
            }
        });

        //圖例窗體的大小
//        barDataSet.setFormSize(15.f);
        ArrayList dataSets = new ArrayList<>();
        dataSets.add(barDataSet);
        BarData data = new BarData(dataSets);
        //柱狀寬度
        data.setBarWidth(0.5f);
        //設定X軸的刻度數
        xAxis.setLabelCount(entries.size() - 1, false);
        barChart.setData(data);
    }

    /**
     * 多個柱狀加載資料
     *
     * @param xAxisValues
     * @param yAxisValues
     * @param label
     * @param color
     * @param type        0手機;1電腦
     */
    public void showBarChart(List<Float> xAxisValues, List<List<Float>> yAxisValues, List<String> label, List<Integer> color, int type) {
        ArrayList dataSets = new ArrayList<>();
        BarData data = new BarData();
        for (int i = 0; i < yAxisValues.size(); i++) {
            ArrayList 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, label.get(i));
            //設定柱狀圖顔色
            barDataSet.setColor(color.get(i));
            //設定數值字型大小
            barDataSet.setValueTextSize(18f);
            barDataSet.setValueTextColor(Color.WHITE);
            //線條寬度
            barDataSet.setFormLineWidth(2f);
            //格式化x軸标簽顯示字元
            if (type == 0) {
                if (i == 0) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            return String.valueOf((int) value);
                        }
                    });
                } else if (i == 1) {
                    barDataSet.setValueFormatter(new ValueFormatter() {
                        @Override
                        public String getFormattedValue(float value) {
                            if (value == 0) {
                                return "0";
                            } else if ((value - (int) value) > 0) {
                                return value + "h";
                            } else {
                                return (int) value + "h";
                            }
                        }
                    });
                }
            } else if (type == 1) {
                barDataSet.setValueFormatter(new ValueFormatter() {
                    @Override
                    public String getFormattedValue(float value) {
                        if (value == 0) {
                            return "0";
                        } else if ((value - (int) value) > 0) {
                            return value + "h";
                        } else {
                            return (int) value + "h";
                        }
                    }
                });
            }

            data.addDataSet(barDataSet);
        }
        int amount = yAxisValues.size();
        //柱狀圖組之間的間距
        float groupSpace = 0.2f;
        float barSpace = 0.00f;
        float barWidth = 0.4f;
        //設定x軸顯示标簽數量
        // (0.45 + 0.02) * 2 + 0.06 = 1.00 -> interval per "group"
        xAxis.setLabelCount(xAxisValues.size() - 1, false);
        data.setBarWidth(barWidth);
        data.groupBars(-0.5f, groupSpace, barSpace);
        // 添加到圖表中
        barChart.setData(data);
    }

}
           

activity_char.xml

柱狀圖和折線圖布局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:gravity="center_horizontal"
    android:orientation="vertical">

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"></LinearLayout>

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

</LinearLayout>
           
import android.app.Activity;
import android.os.Bundle;

import com.github.mikephil.charting.charts.BarChart;

public class ChartActivity extends Activity {

    private BarCharDkey mBarCharMonth;
    private LineChartDkey mLineChartDay;

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

        BarChart chart = (BarChart) findViewById(R.id.line_chart);
        LineChart chart = (LineChart) findViewById(R.id.bar_chart);


         mBarCharMonth = new BarCharDkey(chart);

         ArrayList<Float> xValue = new ArrayList<>();
         for(int i=0;i<12;i++){
         xValue.add((float)i);
         }

         List<List<Float>> yValues = new ArrayList<>();
         for(int i=0;i<2;i++){
         List<Float> yValue = new ArrayList<>();
         for(int j=0;j<12;j++){
         yValue.add((float) (Math.random() * 2000));
         }
         yValues.add(yValue);
         }

         ArrayList<String> title = new ArrayList<>();
         for(int i=0;i<2;i++){
         title.add("title"+i);
         }

         ArrayList<Integer> color = new ArrayList<>();
         //        for(int i=0;i<2;i++){
         color.add(Color.GREEN);
         color.add(Color.RED);
         //        }


         mBarCharMonth.showBarChart(xValue,yValues.get(0),"aaa", Color.GREEN);
         //        mBarCharMonth.showBarChart(xValue,yValues,title, color);



         mLineChartDay = new LineChartDkey(chart);

         ArrayList<Float> xValue = new ArrayList<>();
         for(int i=0;i<31;i++){
         xValue.add((float)i);
         }

         List<List<Float>> yValues = new ArrayList<>();
         for(int i=0;i<2;i++){
         List<Float> yValue = new ArrayList<>();
         for(int j=0;j<31;j++){
         yValue.add((float) (Math.random() * 2000));
         }
         yValues.add(yValue);
         }

         ArrayList<String> title = new ArrayList<>();
         for(int i=0;i<2;i++){
         title.add("title"+i);
         }

         ArrayList<Integer> color = new ArrayList<>();
         //        for(int i=0;i<2;i++){
         color.add(Color.GREEN);
         color.add(Color.RED);
         //        }

         //        mLineChartDay.showLineChart(xValue,yValues.get(0),"aaa", Color.GREEN);
         mLineChartDay.showLineChart(xValue,yValues,title, color);


    }

}
           

橫向柱狀圖布局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

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

用法同上。

繼續閱讀