비비디바비비부
프로그래밍저장소
비비디바비비부
전체 방문자
오늘
어제
  • 프로그래밍 (72)
    • 안드로이드 (5)
      • 잡다한 지식 (40)
      • Compose (2)
      • Design (3)
      • Project (6)
    • 리액트 (4)
      • 프로젝트 (1)
      • 잡다한 지식 (1)
    • 알고리즘 (3)
      • 알고리즘 문제 (3)
    • AI (4)
      • 딥러닝 (4)
    • CS (2)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
비비디바비비부

프로그래밍저장소

MPAndroidChart 너는 뭐니
안드로이드/잡다한 지식

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)
 }

차트

차트 이미지

 

생각보다 퀄리티가 좋아서 만족했다.

 

그 외 많은 기능을 추가할 수 있어서 좋은 라이브러리인 것 같다.

저작자표시 비영리 동일조건 (새창열림)

'안드로이드 > 잡다한 지식' 카테고리의 다른 글

[kotlin] 데이터 클래스 활용법  (0) 2023.05.18
[안드로이드] Compose Pager에서 swipe시 렉  (0) 2023.05.06
[안드로이드] 클린 아키텍처? MVVM? MVP?  (0) 2023.03.11
안드로이드 RoomDB 테스트 코드 짜기  (0) 2023.02.23
내가 사용하는 .gitignore 정리 (안드로이드)  (0) 2023.02.13
    '안드로이드/잡다한 지식' 카테고리의 다른 글
    • [kotlin] 데이터 클래스 활용법
    • [안드로이드] Compose Pager에서 swipe시 렉
    • [안드로이드] 클린 아키텍처? MVVM? MVP?
    • 안드로이드 RoomDB 테스트 코드 짜기
    비비디바비비부
    비비디바비비부
    안드로이드 기술 블로그, 코딩 공부, 프로그래머

    티스토리툴바