티스토리 뷰

R

[R] 데이터 시각화 - 그래프 활용과 Plot

rimo (리모) 2022. 6. 30. 16:31

 

데이터를 분석하는 것 자체도 중요하지만 분석결과를 남들이 쉽게 이해할 수 있도록 전달하는 것 또한 중요합니다.

이를 위해 데이터 시각화와 관련 함수 및 패키지에 대해 다룹니다.

 


 

Plot (  )

 

R에서는 plot 함수를 사용해 여러 객체들을 시각화 할 수 있다. 이때 type 파라미터에 아무런 값을 주지않으면, 기본적으로 산점도가 그려지게 된다. 산점도란 주어진 데이터를 점으로 표시해 흩뿌리듯이 시각화한 그림이다.

 

 

 

 

 

 

ex. mlbench패키지에 Ozone 데이터를 사용해 산점도를 그리는 예제

 

- Ozone 데이터 적재

 

 

 

 

 

 

 

 

- 산점도 출력

 

 

 

 

 

 

 

+ 여러 파라미터를 부여하여 축이나 점의 옵션을 조절할 수 있다.

 

- xlab : x축이름

- ylab : y축이름

- pch : 점의 모양 ( 숫자의 경우 해당 숫자에 지정된 심볼이 나타나며, 문자를 입력하면 해당 문자로 점을 표시한다.)

- cex : 점의 크기

- col : 색상 (색상코드나, 색상고유 이름을 입력하면 된다.)

- xlim : x축의 범위를 설정한다.

- ylim : y축의 범위를 설정한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

- type

 

그래프의 유형을 지정할 수 있다. 

 

ex. cars 데이터를 사용해 다양한 type의 그래프를 출력한다.

 

 

 

 

 

 

 

ex. 평균을 구해 그래프를 그리는 예제

 

 

 

 

 

 

 

 

- mfrow 

한 창에 여러개의 그리프를 나열할 수 있도록 형식을 지정할 수 있다.

 

- par( )

mfrow를 지정하며, 정의한 형식을  인수로 넣어 실행시키면 기존 화면으로 초기화 시킨다.

 

 

 

 

 

 

 

- jitter ( )

 

데이터 값에 약간의 노이즈를 추가하여  같은 값을 가지는 데이터가 그래프에 여러 번 겹쳐서 표시되는 현상을 막아준다.

 

 

 

 

 

 

 

 

 

- points( )

 

이미 그려진 plot에 점을 추가할 수 있도록 한다.

 

 

 

 

- attach( ), detach( )

 

모든 코드에서 컬럼들을 컬럼명으로 직접 접근할 수 있게 한다. (같은 데이터를 지속적으로 이용할 경우 용이하다, 사용후에는 detach를 호출해 할당을 해제하는 것을 권장한다.)

 

 

 

 

 

 

- lines( )

 

이미 그려진 plot에 선을 추가할 수 있도록 한다.

 

 

 

 

 

 

 

 

 

 

- lowess( )

 

데이터에 대한 추세선을 찾는 방법이다. LOWESSy를 x로부터 추정하는 다항식을 찾는다. LOWESS가 찾는 다항식은 y = ax +b 또는  y = ax2 + bx + c와 같은 형태의 저차 다항식(low degree polynomial)이다.  다음과 같이 각 점에서 찾아진 다항식들을 부드럽게 연결하면 데이터의 추세를 보여주는 선이 된다. 

 

 

 

 

 

 

 

 

- abline( )

 

y = bx + a(a 파라미터가 기울기가 아닌 절편으로 사용된다..!) 형태의 직선이나 y=h 형태의 수평선, 또는 x=v 형태의 수직선을 그래프에 그린다. lines와 유사해 보이나 lines 주어진 (x, y) 좌표들을 연결하는 꺾은선을 긋는 것이기 때문에 차이가 있다.

 

 

 

 

 

 

 

- curve( )

 

주어진 식에 대해 곡선을 그린다.

 

 

 

 

 

 

 

 

+ 선형 회귀 함수 lm( )을 이용해 거리에 따른 속력의 선형 회귀 직선을 그리는 예제이다. lm (formula, data = 데이터)으로 사용되며 formula는 종속변수 ~독립변수 형식을 가진다.

 

 

 

 

 

 

- text( ) 

 

plot에 문자를 입력하는 함수이다.

 

 

 

 

 

 

 

 

- identify ( )

 

실행후 클릭된 좌표에서 가장 가까운 점들의 데이터를 레이블로 표시한다. 그래프를 그린 뒤 identify( )를 호출하면 마우스가 커서가 십자 모양으로 변한다. 이때 십자 커서로 그래프에서 특정 점을 클릭하면 중단후 클릭된 점과 가장 가까운 데이터에 레이블이 plot에 표시된다. (마우스 클릭을 중단하려면 finish를 클릭한다.)

 

 

 

 

 

 

+ legend( )

 

범례를 표시하는데에 사용된다.

 

 

 

 

 

 

 

 

- matplot( ), matlines( ), matpoints( )

 

앞서 살펴본 plot( ), lines( ), points( ) 함수와 유사하지만, 행렬 형태를 가진 데이터를 이용해 그래프를 그린다. 함수 호출 방식 역시 큰 차이가 없으며, 입력이 행렬로 주어지기만 하면 된다.

 

 

 

 

 

 

 

- boxplot ( )

 

boxplot을 그린다.  boxplot이란 데이터의 분포를 보여주는 그림으로, 선과 상자로 이루어져 있다. 상자는 제1사분위수, 중앙값, 제3사분위수를 시각화하며, 선은 lower whisker(중앙값 - 1.5 × IQR’보다 큰 데이터 중 가장 작은 값)와 upper whiske(중앙값 + 1.5 × IQR’보다 작은 데이터 중 가장 큰 값)을 나타낸다.

 

 

 

 

 

 

 

 

- hist( )

 

히스토그램을 그린다. 히스토그램은 값의 범위마다 빈도를 표시한 그래프다. freq(빈도) 파라미터를 지정하지 않으면, 각 구간의 확률 밀도가 그려진다.

 

 

 

 

 

 

 

 

- density( )

 

히스토그램은 막대를 그리는 구간(bin)의 너비를 어떻게 잡는지에 따라 전혀 다른 모양이 될 수 있다는 단점이 있다.  density는 막대의 너비를 가정하지 않고 모든 점에서 데이터의 밀도를 추정하는 커널 밀도 추정(kernel density estimation) 방식을 사용하여 이러한 문제를 피한 방법이다.

 

 

 

 

 

+ rug( ) 함수를 사용하면 실제 데이터의 위치를 x축 위에 표시할 수 있다.

 

 

 

 

 

 

 

 

- barplot( )

 

막대 그래프를 그린다.

 

ex. tapply로 Sepal.Width 평균값을 종별로 구하고 막대그래프로 나타낸 예제

 

 

 

 

 

 

 

- pie( )

 

원그래프(파이그래프)를 그린다. 데이터의 비율을 표현하는 목적으로 흔히 사용된다.

 

+ cut : 숫자들을 구간에 따라 분류해 factor로 변환한다.

 

 

 

 

 

 

 

 

 

- mosaicplot( )

 

범주형 다변량 데이터(하나 이상의 변수가 있는 데이터)를 표현하는데 적합한 그래프다. 모자이크 플롯에는 사각형들이 그래프에 나열되며, 각 사각형의 넓이가 각 범주에 속한 데이터의 수에 해당한다. 

 

 

ex. 타이타닉 데이터로 모자이크플롯을 그리는 예제

 

 

 

 

 

 

 

- pairs( )

 

산점도 행렬을 그리기 위해 사용된다. 산점도 행렬이란, 다변량 데이터에서 변수 쌍 간(양별로 비교)의 산점도들을 그린 그래프를 말한다. 산점도 행렬을 사용하면 여러 변수가 있을 때 모든 변수 간 산점도를 손쉽게 그릴 수 있고, 이를 들여다보면 변수들 간 상관관계 등의 특징을 쉽게 찾을 수 있다.

 

 

 

 

 

 

 

 

- persp( ), contour( )

 

각각 투시도와 등고선 그래프를 그리는 함수이다.

 

+ dmvnorm( ) : mvtnorm 패키지에 있으며, 다변량 정규 분포의 확률 밀도를 구한다.

+ outer( ) : 배열의 외적(outer product)을 구한다.

 

 

 

 

 

 

 

 

[참고자료]

 

 

더북(TheBook): R을 이용한 데이터 처리 & 분석 실무

 

thebook.io

 

 

 

감사합니다.

 

 


 

 

 

2022년 AI분석을 위한 R통계교육의 수업내용을 정리한 글입니다.

 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

 

'R' 카테고리의 다른 글

[R] 데이터 시각화 - ggmap  (0) 2022.07.05
[R] 데이터 시각화 - ggplot2  (0) 2022.07.04
[R] 고급 통계  (0) 2022.06.30
[R] 기초 통계  (0) 2022.06.29
[R] 모드(mode)와 자료구조  (0) 2022.06.28
댓글
«   2025/01   »
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
Total
Today
Yesterday