안드로이드/잡다한 지식
MPAndroidChart 너는 뭐니
비비디바비비부
2023. 4. 11. 19:49
xml에서 chart는 없나?
에서 시작한 chart 찾기. android에서 제공하는 것은 없었고, 유명한 라이브러리가 있어서 소개할려고 한다.
GitHub - PhilJay/MPAndroidChart: A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubb
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations. - GitHub - PhilJay/MPAndroidChart:...
github.com
이 차트 라이브러리는 많은 차트를 지원하는데 그 중 Line Chart에 대해서 작성할려고 한다.
사용법은 생각보다 간단한다.
1. XML에 Line Chart를 추가한다.
2. 코드로 디자인 및 데이터를 넣으면 된다.
코드
1. LineChart 전반적인 설정
private fun lineChartSetting() = binding.lcSensorData.apply {
setDrawGridBackground(false)
setDrawBorders(false)
description.isEnabled = false
}
2. 차트의 범례 설정
private fun lineChartLegendSetting() = binding.lcSensorData.legend.apply {
isEnabled = false // 허용하지 않아서 아래 설정은 먹히지 않는다.
verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM
horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER
form = Legend.LegendForm.CIRCLE
formSize = 10f
textSize = 13f
textColor = Color.parseColor("#A3A3A3")
setDrawInside(false)
yEntrySpace = 5f
isWordWrapEnabled = true
xOffset = 80f
yOffset = 20f
}
3.아래 설정
private fun lineChartBottomSetting() = binding.lcSensorData.xAxis.apply {
setDrawAxisLine(false)
setDrawGridLines(false)
position = XAxis.XAxisPosition.BOTTOM
granularity = 1f
textSize = 14f
textColor = Color.rgb(118, 118, 118)
spaceMin = 0.1f
spaceMax = 0.1f
valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
return "4/11"
}
}
}
4. 왼쪽 오른쪽 설정
private fun lineChartLeftSetting() = binding.lcSensorData.axisLeft.apply {
textSize = 14f
textColor = Color.rgb(163, 163, 163)
setDrawAxisLine(false)
setDrawGridLines(false)
axisMaximum = 100f
axisMinimum = 0f
}
private fun lineChartRightSetting() = binding.lcSensorData.axisRight.apply {
isEnabled = false
}
5. 데이터 넣기
...
set1.apply {
lineWidth = 3f
circleRadius = 6f
setDrawValues(false)
setDrawCircleHole(true)
setDrawHorizontalHighlightIndicator(false)
setDrawHighlightIndicators(false)
color = Color.rgb(255, 155, 155)
setCircleColor(Color.rgb(255, 155, 155))
}
val dataSets: ArrayList<ILineDataSet> = ArrayList()
dataSets.add(set1) // add the data sets
// create a data object with the data sets
val data = LineData(dataSets)
}
차트
생각보다 퀄리티가 좋아서 만족했다.
그 외 많은 기능을 추가할 수 있어서 좋은 라이브러리인 것 같다.