728x90
안녕하세요. 오늘은 MPAndroidChart 라이브러리에서
x축 값을 String 형태의 값으로 변경하는 방법에 대해 알려드리겠습니다.
해당 라이브러를 사용하기 위해 gradle 에 의존성 추가를 해야합니다.
먼저 build.gradle 으로 들어갑니다.
dependecies 에 다음과 같이 라이브러리를 추가해줍니다.
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
그다음에 settings.gradle 에 들어가서 다음과 같이 추가해줍니다.
maven { url 'https://jitpack.io' }
그 다음으로 drawable 에 다음과 같이 코드를 작성해줍니다.
<?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.LineChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginBottom="312dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
mainActivty 에 다음과 같이 작성해줍니다.
package com.example.stickodetest;
import static android.graphics.Color.parseColor;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
//선 그래프
private LineChart lineChart;
ArrayList<Entry> entry_chart1 = new ArrayList<>(); // 데이터를 담을 Arraylist
ArrayList<String> xVals = new ArrayList<String>(); // 변환할 String 형태 x축 값
LineDataSet lineDataSet1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineChart = (LineChart) findViewById(R.id.chart);
xVals.clear(); // x축 배열 모든 값 제거
entry_chart1.clear();
LineData chartData = new LineData(); // 차트에 담길 데이터
entry_chart1.add(new Entry(0, 1)); //entry_chart1에 좌표 데이터를 담는다.
entry_chart1.add(new Entry(1, 2));
entry_chart1.add(new Entry(2, 3));
entry_chart1.add(new Entry(3, 4));
entry_chart1.add(new Entry(4, 2));
for(int i =0;i<5;i++){
String xValue= i+1+"번째";
Log.d("x값 확인",xValue);
xVals.add(xValue);
}
lineDataSet1 = new LineDataSet(entry_chart1, "LineGraph1"); // 데이터가 담긴 Arraylist 를 LineDataSet 으로 변환한다.
lineDataSet1.setColor(Color.RED); // 해당 LineDataSet의 색 설정 :: 각 Line 과 관련된 세팅은 여기서 설정한다.
chartData.addDataSet(lineDataSet1); // 해당 LineDataSet 을 적용될 차트에 들어갈 DataSet 에 넣는다.
lineChart.setData(chartData); // 차트에 위의 DataSet을 넣는다.
XAxis xAxis = lineChart.getXAxis(); // XAxis : x축 속성 설정하기 위해서 xAxis 객체 만들어줌
xAxis.setValueFormatter(new IndexAxisValueFormatter(xVals)); // String 형태의 x 값이 들어있는 배열을 Formmatter 인자값으로 넣어줌]
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // x축 아래쪽
xAxis.setTextSize(13f); // x축에 표출되는 텍스트의 크기
xAxis.setDrawGridLines(false); //x축의 그리드 라인을 없앰
xAxis.setLabelCount(3); //x축의 데이터를 최대 몇 개 까지 나타낼지에 대한 설정
lineChart.invalidate(); // 차트 업데이트
}
}
위와 같은 과정을 통해 다음과 같이 그래프를 구현할 수 있습니다.
'안드로이드 자바' 카테고리의 다른 글
[Android][JAVA] WorkerManager 사용해서 백그라운드 작업하기 (2) | 2023.05.06 |
---|---|
[Android][Java] 앱이 요청한 권한(permission)의 이름을 화면에 출력해보기 (0) | 2023.05.05 |
[Android][JAVA]간단한 텍스트뷰 자동완성 (0) | 2023.05.02 |
[Android][Java] Customize Line Chart (0) | 2023.04.29 |
[Android][Java]PreferenceScreen 사용해서 SharedPreferences데이터 저장하기 (0) | 2023.04.28 |