AOS

[Kotlin] MpAndroidChart 사용하기 / 클릭하면 x축 label 출력

유랄라- 2022. 1. 5. 01:43
반응형

https://github.com/PhilJay/MPAndroidChart

 

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

 

1. build.gradle에 mpandroidchart 추가

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}

 

2. 원하는 곳에 xml 추가

<com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3. 코드

val lineChart: LineChart = binding.chart

//data 가져오기
val dateList = mutableListOf<String>()
val priceList = mutableListOf<String>()
it.forEach { element ->
  dateList.add(element.date)
  priceList.add(element.price)
}


val entries = ArrayList<Entry>()
for(i in 0 until priceList.size){
  entries.add(Entry(i.toFloat(), priceList[i].toFloat()))
}
val labels = ArrayList<String>()
  for(i in 0 until dateList.size){
  labels.add(dateList[i])
}
val dataset= LineDataSet(entries, "")
lineChart.xAxis.valueFormatter=IndexAxisValueFormatter(labels)

//클릭시 x축 label 출력
lineChart.setOnChartValueSelectedListener(object: OnChartValueSelectedListener{
  override fun onValueSelected(e: Entry, h: Highlight){
    val xAxisLabel = e.x.let{
      lineChart.xAxis.valueFormatter.getAxisLabel(it, lineChart.xAxis)
      }
      binding.test.text= xAxisLabel
   }
   override fun onNothingSelected() {
   }
})

lineChart.getTransformer(YAxis.AxisDependency.LEFT)
lineChart.xAxis.position = XAxis.XAxisPosition.BOTTOM

val data = LineData(dataset)

lineChart.data = data
lineChart.invalidate()

반응형