🔍 Graph - Barchart
주요 사용기능
💡Filter 이름순, 낮은 순, 높은 순 정렬
💡animation
💡color classification 상한 섭취량과 권장 섭취량을 기준으로 color classification
사용 라이브러리 : MPAndroidChart
-xAxis
val xAxis = chart_home.xAxis
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.granularity = 1f // 라벨 써주는 간격 조정
xAxis.setDrawGridLines(false)
xAxis.setDrawAxisLine(false)//뒤에 선 지우자
xAxis.setDrawLabels(false)//이것이 바로 라벨을 지워주는 친구 ex) 비타민 D 같은 것들
-yAxis -axisLeft , axisRight
val rightYAxis = chart_home.axisRightright
YAxis.isEnabled = false //오른쪽 y축 사용 해제
val leftYAxis = chart_home.axisLeft
leftYAxis.setAxisMaximum(120f)
leftYAxis.setAxisMinimum(0f)
leftYAxis.granularity = 20f //라벨 써주는 간격 조정
leftYAxis.setDrawLabels(false)
leftYAxis.setDrawGridLines(false)
leftYAxis.setDrawAxisLine(false)
y축은 왼쪽 오른쪽이 있기때문에 활성화에 대한 여부를 결정해야한다.
rightYAxis.isEnabled = false 를 하지않으면
leftYAxis.setDrawLabels(false)
leftYAxis.setDrawGridLines(false)
leftYAxis.setDrawAxisLine(false) 를 해도 뒤에 선이 없어지지 않는다.
-LimitLine
val ll1 = LimitLine(100f, "")//선을 그려줄 위치,라벨이름
ll1.lineWidth = 3f //선의 굵기
ll1.enableDashedLine(50f, 20f, 0f)//ll1.enableDashedLine(선의 길이, 선사이의 공간, 0f)
ll1.labelPosition = LimitLine.LimitLabelPosition.LEFT_TOP //라벨의 위치
ll1.lineColor = ContextCompat.getColor(context!!, R.color.colorRed) //상한선의 색 설정
ll1.textSize = 10f //라벨의 폰트사이즈
-X에 그려줄 최소, 최대 단위 정하기
chart_home.setVisibleXRange(3f, 6f)
최대 한 뷰에서 6개 bar를 그려준다
formatter를 통해 라벨 설정
val formatter = object : ValueFormatter() {
override fun getAxisLabel(value: Float, axis: AxisBase?): String {
return xLabelIngredients[value.toInt()]
}
}
xLabelIngredients 성분을 custom으로 라벨링 하기 위해서 formatter 사용
그래프 색상 설정
val dataSet = BarDataSet(listData, "") //그래프에 그려줄 데이터 설정
val listColor = ArrayList()listColor.add(ContextCompat.getColor(context!!,R.color.colorRedGraph))
listColor.add(ContextCompat.getColor(context!!,R.color.colorBlueGraph))
dataSet.colors = listColor // 그래프에 두가지 색으로 설정
color classification - 상한 섭취향이상과 권장 섭취량 이하는 colorRed로 사이값은 colorBlue
정렬
//순서 선택정렬
var temp = listData2[i].y
listData2[i].y = listData2[min].y
listData2[min].y = temp
//매칭되어있는 라벨도 함께 이동
var tempX = xLabelIngredients2[i]
xLabelIngredients2[i] = xLabelIngredients2[min]
xLabelIngredients2[min] = tempX
이름순, 낮은 순, 높은 순 spinner로 선택할떄마다 정렬을 다시해줌
animate
chart_home.animateY(1000) //세로축 에니메이션