[Android] MPAndroidChart 라이브러리 사용
Intro
👩 이번 시간에는 안드로이드에서 다양한 차트 뷰를 만들 수 있는 MPAndroidChart 라이브러리를 활용해 원형차트(piechart)를 구현해보고자 한다.
차트와 관련된 다양한 예제가 위 링크 깃 허브에 존재하니 함께 확인해보길 바란다.
🙋♀️Setup
- 우선 해당 라이브러리를 사용하기 위해 다음의 코드를 gradle에 추가해야 한다.
buildscript {
repositories {
google()
jcenter()
# maven 추가!
maven { url "https://jitpack.io"}
}
}
allprojects {
repositories {
jcenter()
# maven 추가!
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
여기까지가 준비과정 끝이다!
그렇다면 이제 본격적으로 파이차트를 구현해보자!
🙋♀️ piechar_activity.xml
다음 코드를 통해서 라이브러리 속 PieChart를 가져와 xml에 요소를 추가할 것이다.
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/piechart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
🙋♀️ PieChartActivity.kt
👩 우선 그래프에 필수적인 데이터 요소를 어떻게 구성해야 하는지 살펴보자.
- 그래프를 구성할 요소들의 리스트
- 해당 dataset은 PieEntry로 구성된 ArrayList이다.
-
위 dataset과 label을 함께 설정해 PieDataSet 요소를 만든다.
-
해당 PieDataSet을 사용해 그래프 data 속성에 적용할 PieData를 구성한다.
- xml에 속 piechart를 가져와 data를 적용해준다.
👩 여기까지만 진행한다면 가장 기본적인 파이차트를 사용할 수 있을 것이다.
간단하지 않은가?? 코드를 확인하며 다시 한 번 그 과정을 알아보자!
class PieChartActivity : AppCompatActivity() {
private lateinit var binding: PiechartActivityBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = PiechartActivityBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
setTitle("PieChat")
# 그래프 색 설정 시, 필요
val colorItem = arrayListOf<Int>(Color.parseColor("#403660"), Color.parseColor("#6F5BA7"), Color.parseColor("#B19BF1"))
# 1. 그래프 구성 data 요소
val dataSet = ArrayList<PieEntry>()
dataSet.add(PieEntry(10f, "soccer"))
dataSet.add(PieEntry(20f, "basketball"))
dataSet.add(PieEntry(50f, "baseball"))
dataSet.add(PieEntry(10f, "handball"))
dataSet.add(PieEntry(10f, "swimming"))
# PieDataSet
val pieDataSet = PieDataSet(dataSet,"practice")
pieDataSet.apply {
# 그래프 속 들어갈 dataset에 색깔들 적용!
colors = colorItem
valueTextColor = Color.WHITE
valueTextSize = 16f
}
# PieData
val pieData = PieData(pieDataSet)
binding.piechart.apply {
# 파이차트에 data 설정
data = pieData
# 그 외 설정들!
centerText = "Percentage of Exercise"
description.isEnabled = false
setEntryLabelColor(Color.WHITE)
setUsePercentValues(true)
setEntryLabelColor(Color.BLACK)
animateY(1400, Easing.EaseInOutQuad)
animate()
}
}
}
👩 파이차트를 위한 데이터 설정은 위 코드와 같이 간단하다.
이제 원하는 형태로 그래프의 모양을 수정하고, 다양한 기능을 추가하거나 삭제하면 된다.
위에서 적용한 속성들을 간단히 정리하자면 다음과 같다.
- setUsePercentValues: 들어온 값을 percentage를 적용해 표시
- setEntryLabelColor: 파이차트 각 요소 text 색 설정
- valueTextColor: 파이차트 각 요소 비율 text 색 설정
- centerText: 파이차트 중앙에 들어오는 text
- description: 파이차트 오른쪽 하단에 들어가는 차트 제목
- animateX: 애니메이션 효과 설정
- animate()와 함께 사용!
이 외에도 정말 다양한 설정이 가능하다!
👩 위 코드를 적용한 결과를 한 번 살펴보자!
🙋♀️ 기본 원 차트
👩 해당 코드는 필자가 필요해 작성한 아무 속성도 적용하지 않은 기본 원 차트에 대한 코드이다.
class PieChartActivity : AppCompatActivity() {
private lateinit var binding: PiechartActivityBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = PiechartActivityBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
setTitle("PieChat")
val colorItem = arrayListOf<Int>(Color.parseColor("#403660"), Color.parseColor("#6F5BA7"), Color.parseColor("#B19BF1"))
val dataSet = ArrayList<PieEntry>()
dataSet.add(PieEntry(10f, "soccer"))
dataSet.add(PieEntry(20f, "basketball"))
dataSet.add(PieEntry(50f, "baseball"))
dataSet.add(PieEntry(10f, "handball"))
dataSet.add(PieEntry(10f, "swimming"))
val pieDataSet2 = PieDataSet(dataSet, "practice")
pieDataSet2.apply{
colors = colorItem
valueTextColor = Color.BLACK
valueTextSize = 16f
setDrawValues(false)
}
val pieData2 = PieData(pieDataSet2)
binding.piechart2.apply{
data = pieData2
description.isEnabled = false
setUsePercentValues(true)
# 그래프 회전 x
isRotationEnabled = false
# 그래프 각 요소 설명 x (ex. baseball, soccer...)
setDrawEntryLabels(false)
# 요소 클릭 시, 확대 기능 x
setTouchEnabled(false)
# 하단 왼쪽 요소 설명 x
legend.isEnabled = false
# 파이차트 중간 hole 크기
holeRadius = 75F
setEntryLabelColor(Color.BLACK)
}
}
}
(사진의 하단에 위치한 차트가 위 코드의 결과이다!)
그렇다면 이번 게시글은 여기서 마무리하겠다!
이만!
끝! ~(˘▾˘~)
✍ GIT REPO
📃참고
- https://goodgoodminki.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9B%90%ED%98%95-%EA%B7%B8%EB%9E%98%ED%94%84-%ED%8C%8C%EC%9D%B4-%EA%B7%B8%EB%9E%98%ED%94%84-Android-Koltin-Circle-Graph-Pie-Graph
- https://meyouus.tistory.com/23 *https://github.com/PhilJay/MPAndroidChart
댓글남기기