본문 바로가기
안드로이드 자바

[Java][Android] MPAndroidChart

by teamnova 2022. 1. 26.
728x90

안드로이드에서 가장 많이 사용되는 차트라이브러리인 MPAndroidChart를 이용해 보려고 한다.

그 중 거미줄 모양의 RadarChart를 사용해 보겠습니다.

 

1. 해당 라이브러리를 추가해준다.

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

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

 

2. xml 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".activities.MapSearchDetailActivity"
    >

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


</LinearLayout>

 

3. java 코드

//xml
    RadarChart radarChart;
     radarChart = findViewById(R.id.mapsearchdetail_radar_chart);
//차트 데이터 생성
    private ArrayList<RadarEntry> dataValue(){
        ArrayList<RadarEntry> dataVals = new ArrayList<>();
        dataVals.add(new RadarEntry(bigMartList.size()));
        dataVals.add(new RadarEntry(gs24List.size()));
        dataVals.add(new RadarEntry(schoolList.size()));
        dataVals.add(new RadarEntry(academyList.size()));
        dataVals.add(new RadarEntry(subwayList.size()));
        dataVals.add(new RadarEntry(bankList.size()));
        dataVals.add(new RadarEntry(hospitalList.size()));
        dataVals.add(new RadarEntry(pharmacyList.size()));
        dataVals.add(new RadarEntry(cafeList.size()));
        return  dataVals;
    }
 데이터 리스트를 만든다.

//차트생성
    private void makeChart(){
        RadarDataSet dataSet = new RadarDataSet(dataValue(), "DATA");
        dataSet.setColor(Color.BLUE);

        RadarData data = new RadarData();
        data.addDataSet(dataSet);
        String[] labels =  {"대형마트", "편의점", "학교", "학원", "지하철", "은행", "병원", "약국", "카페"};
        XAxis xAxis = radarChart.getXAxis();
        xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));
        radarChart.setData(data);
    }

 

  • dataSet 생성
  • setColor
  • label
  • 차트에 setData

 

차트 예시 이미지

  • 트에 setData