본문 바로가기

Android

[Library : MpAndroidChart ] BarChart : 축 및 라벨 설정/ 그리드 없애기/색상 지정/ 한정선 설정

 🔍 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) //세로축 에니메이션