BÀI 80 - VẼ BIỂU ĐỒ TRONG ANDROID
2 thư viện vẽ biểu đồ sưu tập
https://github.com/PhilJay/MPAndroidChart (cái này nhiều tính năng hơn)
https://github.com/AnyChart/AnyChart-Android (cái này có hướng dẫn cụ thể hơn)
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();
}