본문 바로가기
SW 프로그래밍/안드로이드

안드로이드 스튜디오에서 MPAndroidChart 사용법

by N2info 2018. 2. 13.

안드로이드 스튜디오에서 MPAndroidChart 사용법


참조사이트 : 지민의 개발개발



안드로이드앱에서 차트를 기리기 위해 여러 사이트를 전전했지만 구체적인 방법을 알려주는데를 찾비 못했다.


그러던중 제일 자세하세 설명한 사이트의 내용을 기록하기위해 작성하였다.



1. Gradle dependency 추가


   프로젝트 레벨의 build.gradle


  프로젝트 레빌의 build.gradle는 아래 그림과 같은 위치의 build.gradle 파일이다.

  즉 파일구조를 프로젝트로 해놓고 난 다음에 보이는 build.gradle(파란색) 이다.

  



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

 

  앱 수준의 build.gradle

  앱 수준의 build.gradle는 아래 그림과 같은 위치의 build.gradle 파일이다.

  즉 파일구조를 프로젝트로 해놓고 난 다음에 보이는 build.gradle(파란색) 이다.

  서로 다른 파일이다.



1
2
3
dependencies {
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
}


2. 해당 Activity의 Layout 파일(xml)에 그래프가 보여질 부분에 아래와 같은 내용을 추가한다


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


차트의 종류는   <com. 까지 타이프 하면 이하 그래프 종류가 화면에 나타난다.


상세설명은(코딩을 기억하자님의 블로그 참조)


1. LineChart 를 find해옵니다.

2. 리스트에 Entry 타입을 선언합니다. Entry타입 list는 그래프의 x축, y 축 값을 설정 할 수 있습니다. add(new Entry(x축1칸당 값, y값))

3. DataSet을 만듭니다. DataSet에 위에만든 Entry를 넣습니다. 그리고 그래프의 선색, 포인트지점의 원색, 등을 설정 할 수 있습니다.

4. XAxis, YAxis 로 x축속성, y축 속성을 설정 할 수 있습니다. (포지션, 색상 등)

5. 라인차트에 효과를 줄 수 있습니다. (차트 드래그,더블클릭,줌 효과, 애니매이션 효과 등)


추가적인 기술문서는 https://github.com/PhilJay/MPAndroidChart/wiki  참조



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class MainActivity extends Activity{
 
    private LineChart lineChart;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        lineChart = (LineChart)findViewById(R.id.chart);
 
        List<Entry> entries = new ArrayList<>();
        entries.add(new Entry(1, 1));
        entries.add(new Entry(2, 2));
        entries.add(new Entry(3, 0));
        entries.add(new Entry(4, 4));
        entries.add(new Entry(5, 3));
 
        LineDataSet lineDataSet = new LineDataSet(entries, "속성명1");
        lineDataSet.setLineWidth(2);
        lineDataSet.setCircleRadius(6);
        lineDataSet.setCircleColor(Color.parseColor("#FFA1B4DC"));
        lineDataSet.setCircleColorHole(Color.BLUE);
        lineDataSet.setColor(Color.parseColor("#FFA1B4DC"));
        lineDataSet.setDrawCircleHole(true);
        lineDataSet.setDrawCircles(true);
        lineDataSet.setDrawHorizontalHighlightIndicator(false);
        lineDataSet.setDrawHighlightIndicators(false);
        lineDataSet.setDrawValues(false);
 
        LineData lineData = new LineData(lineDataSet);
        lineChart.setData(lineData);
 
        XAxis xAxis = lineChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setTextColor(Color.BLACK);
        xAxis.enableGridDashedLine(8, 24, 0);
 
        YAxis yLAxis = lineChart.getAxisLeft();
        yLAxis.setTextColor(Color.BLACK);
 
        YAxis yRAxis = lineChart.getAxisRight();
        yRAxis.setDrawLabels(false);
        yRAxis.setDrawAxisLine(false);
        yRAxis.setDrawGridLines(false);
 
        Description description = new Description();
        description.setText("");
 
        lineChart.setDoubleTapToZoomEnabled(false);
        lineChart.setDrawGridBackground(false);
        lineChart.setDescription(description);
        lineChart.animateY(2000, Easing.EasingOption.EaseInCubic);
        lineChart.invalidate();
 
    }
}