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

[Android][Java] 레이더 그래프 그리기

by teamnova 2023. 4. 13.
728x90

안녕하세요 

오늘은 레이더 그래프를 만들어 보겠습니다.

 

1. 라이브러리 등록 

먼저 build.gradle에 라이브러리를 추가해줍니다.

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

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

2. 메인 화면 레이아웃 구성

main.xml

메인 화면에 다음과 같이 RaderChart 뷰를 만들어줍니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

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


</androidx.constraintlayout.widget.ConstraintLayout>

 

3. 액티비티 코드 작성

MainActivity.java

public class MainActivity extends AppCompatActivity {
    ActivityMainBinding bind;
    RadarChart radarChart;
    // 카테고리 라벨 등록
    String[] labels = {"BMW", "폭스바겐", "볼보", "아우디", "람보르기니"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        bind = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(bind.getRoot());
        radarChart = bind.RadarChart;

        // 레이더 차트에 사용할 데이터셋을 생성합니다
        RadarDataSet dataSet1 = new RadarDataSet(dateValues(),"데이터셋 1");
        RadarDataSet dataSet2 = new RadarDataSet(dateValues2(),"데이터셋 2");

        // 데이터의 색상을 설정합니다.
        dataSet1.setColor(Color.RED);
        dataSet2.setColor(Color.BLUE);

        // 그래프에 직접 들어갈 데이터
        RadarData data = new RadarData();
        data.addDataSet(dataSet1);
        data.addDataSet(dataSet2);

        // X축 라벨을 표시할 값을 설정합니다.
        XAxis xAxis = radarChart.getXAxis();
        xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));

        // 레이더 차트에 데이터를 적용하고 뷰를 다시 그려줍니다.
        radarChart.setData(data);
        radarChart.invalidate();
    }

    // 레이더 차트에 적용할 데이터 셋을 생성하는 메서드 입니다.
    private ArrayList<RadarEntry> dateValues(){
        ArrayList<RadarEntry> DataVals = new ArrayList<>();
        DataVals.add(new RadarEntry(4));
        DataVals.add(new RadarEntry(7));
        DataVals.add(new RadarEntry(1));
        DataVals.add(new RadarEntry(5));
        DataVals.add(new RadarEntry(4));
        return  DataVals;
    }
    private ArrayList<RadarEntry> dateValues2(){
        ArrayList<RadarEntry> DataVals = new ArrayList<>();
        DataVals.add(new RadarEntry(9));
        DataVals.add(new RadarEntry(1));
        DataVals.add(new RadarEntry(6));
        DataVals.add(new RadarEntry(8));
        DataVals.add(new RadarEntry(2));
        return  DataVals;
    }

 

4. 결과

레이더 그래프 결과