본문으로 바로가기



R을 사용한 쿨(Cool)한 그래프 - 1. 축 그리기 및 배경기준선 그리기

category R Programming/Graphics 2017.05.24 00:38

이번 포스팅에서는 R을 사용하여 쿨해 보이는 그래프를 그리는 방법을 알아보도록 하겠다. 사실 R에는 다양하고 편리한 그래프 팩키지들이 있어서 팩키지를 다운 받은 후 사용하면 되지만, 그 이전에 기본 명령어를 사용하여 플랏(Plot)을 그리는 원리를 이해한다면 나중에 그래프 팩키지를 사용할 때 훨씬 이해가 쉽다.

R의 그래프 명령어를 공부하는데에 가장 쉬운 예제는 우리가 익히 알고 있는 히스토그램(R통계 팩키지임에도 불구하고)도 bar차트도 아닌 단순한 x-y 그래프이다. x-y 그래프를 완벽히 숙지하고 있다면 다른 어떤 그래프도 손쉽게 만들어 낼 수 있을 것이라고 필자는 생각한다.

자, 각설하고 그래프 그리기를 시작하자. 우리가 수학시간에 배웠던 \(y=x^2\)를 그리고 싶다고 생각하자. 그렇다면 제일 먼저 할 일은 x벡터와 y벡터를 생성하는 일 일것이다. x 벡터를 생성한 후 이를 바탕으로 y 벡터를 생성하자.

x <- seq(-10, 10, length.out = 100)
y <- x^2

위의 명령어는 -10에서 10까지 100개의 같은 간격을 가진 수열을 생성하고, 이를 이용하여 x 벡터 각 원소의 제곱된 값을 원소로 가지는 y벡터를 생성한다. 이 두 벡터를 가지고 그래프를 그리기 위하여 R에 다음의 명령어를 입력하도록 하자.

plot(x,y)

단지 명령어 하나만 입력했지만 그럴싸한 그래프가 나왔다. 하지만 우리의 목표는 쿨~해보이는 그래프를 그리는 것이므로 주어진 그래프를 좀더 다듬어 보도록 하자.

먼저, 우리는 \(y=x^2\)의 그래프를 그리고 싶은 것이므로, 점으로 이루어진 그래프를 실선으로 바꿔주고, 색깔 역시 식상하므로 칙칙한 검정색이 아닌 쿨톤 파랑으로 선택하자.

plot(x,y, type = 'l', col = "Blue")

두번째 단계는 우리가 가지고 있는 데이터가 -10부터 10까지를 가지고 있지만, 사실 전체 그래프가 아닌 특정값 근처를 보고싶을때가 있으므로 x축과 y축의 보여지는 범위를 조정하는 옵션을 추가하자. 나중에 이 부분을 수정한다면 손쉽게 그래프가 보여주는 범위를 조정할 수 있을 것이다. 다음의 R코드는 x축을 -2에서 2까지 보여지도록하고 제곱 그래프이므로 y축도 0에서 4까지 보여지도록 조정하는 코드이다.

plot(x,y, xlim = c(-2,2), ylim = c(0,4), type = 'l', col = "Blue")

생각해보니, 쿨한 그래프인데 x축과 y축이 빠져있다. 이것은 쿨하지 못하므로 다음과 같이 추가해주자.

plot(x,y, xlim = c(-2,2), ylim = c(0,4), type = 'l', col = "Blue")
abline( v = 0, lty = 1)
abline( h = 0, lty = 1)

abline 커맨드는 이미 생성된 플락(plot)에 여러 직선을 추가 할 수 있도록 해주는 명령어이다. 예전에 공부했던 ?abline 명령어를 이용하여 살펴보면 다음과 같은 문법을 가지고 있다는 것을 알 수 있다.

abline(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL,
       coef = NULL, untf = FALSE, ...)

몇 가지만 공부하고 넘어가면, abline 함수의 ab 요소는 절편과 기울기를 사용하여 직선을 표현하고 싶은 경우 이용할 수 있고, hv의 경우는 가로세로 직선을 추가할 때 편하게 사용할 수 있다. 따라서 위에 사용된 abline( v = 0, lty = 1) 명령어의 경우 세로 직선을 가로축의 0 위치에 그려라라는 뜻으로 y축을 그리는데에 사용되었다. 마찬가지로 abline( h = 0, lty = 1) 명령어의 경우는 가로로 된 직선을 세로축의 0위치에 그려라라는 의미로 x축을 그리는데에 사용되었다.

이 명령어를 이해했다면, 우리의 그래프를 다음과 같은 쿨~내음이 진동하는 그래프로 탈바꿈 시킬 수 있게 된다.

plot(x,y, xlim = c(-2,2), ylim = c(0,4), type = 'l', col = "Blue")
abline(h = 0:4, v = -2:2, col = "Gray", lty=3)
abline( v = 0, lty = 1)
abline( h = 0, lty = 1)


여기서 주의할 점은 회색 점선을 먼저 그리고 x축과 y축을 그렸다는 점인데, 이 순서가 바뀌면 회색 선에 x,y축이 가려져서 안보이게 된다. 마지막으로 열 개의 회색 점선이 abline(h = 0:4, v = -2:2, col = “Gray”, lty=3) 명령어 한 줄로 추가되었다는 점인데, R이 벡터기반 프로그래밍 언어라는 속성을 잘 보여주는 명령어라는 생각이 든다. 이 내용에 대해서는 앞선 세 벡터에 관한 강의를 이해하고 있다면 충분히 이해할 것이라고 생각하고, 다음 이어지는 강의에서는 우리가 만든 그래프를 좀 더 쿨하게 만드는 방법에 대하여 알아보자.


SHARE TO



티스토리 툴바