BÀI 80 - VẼ BIỂU ĐỒ TRONG ANDROID

2 thư viện vẽ biểu đồ sưu tập

Video mẫu MPAndroidCharts

Video hướng dẫn 3 trong số các mẫu biểu đồ của MPAndroidCharts

Danh sách hướng dẫn MPAndroidCharts

  • Code như sau:

  • Lưu ý biểu đồ Barchart sử dụng class BarEntry nhé! cái khác thì tên của cái đó + Entry

bcTiemChung = findViewById(R.id.barchart_thongtintiemchung);

ArrayList<BarEntry> arrayListTiemTheoNgay = new ArrayList <>();

arrayListTiemTheoNgay.add(new BarEntry(1, 1000000));

arrayListTiemTheoNgay.add(new BarEntry(2, 19221));

arrayListTiemTheoNgay.add(new BarEntry(3, 28432));

arrayListTiemTheoNgay.add(new BarEntry(4, 982432));

arrayListTiemTheoNgay.add(new BarEntry(5, 23243));


BarDataSet barDataSet = new BarDataSet(arrayListTiemTheoNgay, null);

barDataSet.setColors(ColorTemplate.MATERIAL_COLORS);

barDataSet.setValueTextColor(Color.BLACK);

barDataSet.setValueTextSize(16f);


BarData barData = new BarData(barDataSet);


bcTiemChung.setFitBars(true);

bcTiemChung.setData(barData);

bcTiemChung.getDescription().setText("Biểu đồ ví dụ");

bcTiemChung.animateY(2000);

  • Mặc định thì trục y sẽ phải các số như 1, 2, 3, 4, 5 ...

  • Nếu muốn thay đổi thì làm tương tự như dưới.

  • Tạo một cái gì đó muốn đổi thành

private ArrayList<String> getDate() {

ArrayList<String> date = new ArrayList <>();

date.add("2/10");

date.add("3/10");

date.add("4/10");

date.add("5/10");

date.add("6/10");

return new ArrayList <>(date);

}

  • Rồi thêm code format lại như này.

XAxis xAxis = bcTiemChung.getXAxis();

xAxis.setValueFormatter(new IndexAxisValueFormatter(getDate()));

private void SetupChartLPG() {

if (arrayListDuLieu.size() > 0){

ArrayList<Entry> arrayListLPG = new ArrayList <>();

for (int i=0; i<arrayListDuLieu.size(); i++){

arrayListLPG.add(new Entry(i, arrayListDuLieu.get(i).getLPG()));

}


LineDataSet dataSet = new LineDataSet(arrayListLPG, "Số liệu quan trắc");

dataSet.setValueTextSize(0f);

dataSet.setLineWidth(3f);

dataSet.setHighLightColor(Color.RED);

dataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);

dataSet.setDrawFilled(true);

dataSet.setFillColor(Color.BLUE);


LineData lineData = new LineData(dataSet);

chartLPG.setData(lineData);

chartLPG.invalidate();

chartLPG.getDescription().setText("Quan trắc LPG");


XAxis axis = chartLPG.getXAxis();

axis.setValueFormatter(new IndexAxisValueFormatter(setDate()));


} else {

showToast();

}

}


private ArrayList<String> setDate(){

ArrayList<String> date = new ArrayList <>();

for (int i=0; i<arrayListDuLieu.size(); i++) {

date.add(FormatTime(arrayListDuLieu.get(i).getThoiGian()));

}

return date;

}


private String FormatTime(String txt) {

String[] format = txt.split(" ");

String[] result = format[0].split(":");

return result[0] + ":" + result[1];

}


private void showToast() {

Toast.makeText(getApplicationContext(), "Chưa có dữ liệu mà", Toast.LENGTH_SHORT).show();

}