R 데이터 분석에서 가장 효과적인 방법 중 하나는 그래프를 통해 데이터를 시각화하는 것입니다. R은 데이터 시각화를 위해 plot()
함수를 제공합니다. 이 글에서는 R 그래프 그리기의 핵심인 plot()
함수의 모든 것을 완벽하게 정리해 보도록 하겠습니다.
R 그래프 그리기 개념 이해
R의 기본 그래픽 시스템은 레이어 개념을 바탕으로 구축되어 있습니다. 각 레이어에 여러 그래픽 요소를 추가하며 복잡한 그래프를 만들 수 있습니다.
기본 plot()
의 레이어 개념
아래의 예제 코드는 R의 plot()
함수를 사용하여 간단한 그래프를 생성하는 방법을 보여줍니다. 코드를 살펴보면, plot()
, points()
, abline()
이렇게 총 3개의 레이어가 있는 것을 알 수 있습니다.
plot(0, 0,
xlim = c(0, 10),
ylim = c(0, 20),
type = "n",
xlab = "x title",
ylab = "y title",
main = "main title")
points(1:10, 1:10, col = "red")
abline(a = 20, b = -2, lty = "dashed")
plot()
함수는x
와y
좌표를 사용하여 그래프의 기본 프레임을 생성합니다.points()
함수로 그래프에 점을 추가할 수 있으며,col
옵션으로 색상을 지정할 수 있습니다.abline()
함수는 그래프에 선을 추가하는데 사용됩니다. 일반적으로y = a + bx
형태의 방정식을 사용하여 선을 정의합니다. 여기서는a
는 y절편,b
는 기울기를 나타냅니다. 직선의 방정식을 지정하고,lty
로 선의 스타일을 지정했습니다.
R 그래프 종류 설정하기 – type 옵션
type
옵션은 그래프의 형태를 지정합니다. 다음은 type
옵션의 주요 값들입니다.
l
: 선 그래프b
: 점과 선의 그래프p
: 점 그래프o
: 점 위에 선을 그린 그래프n
: 그래프의 프레임만 그림
예를 들어, 아래 코드는 type
옵션을 o
로 설정하여 점 위에 선을 그린 그래프를 생성합니다.
plot(1:10, 1:10, type = "o")
펭귄데이터 시각화 하기
R을 사용하여 데이터를 시각화하는 방법을 더 깊이 이해하기 위해, 실제 데이터셋을 사용한 예제를 살펴보겠습니다. palmerpenguins
패키지에 포함된 펭귄 데이터를 사용하여 부리의 길이와 깊이에 따른 펭귄의 종을 시각화해보겠습니다.
palmerpenguins 패키지
palmerpenguins
패키지는 Palmer Station, Antarctica에서 수집된 펭귄 데이터를 포함하고 있습니다. 여기에는 아델리 펭귄, 진스트랩 펭귄, 젠투 펭귄 등 여러 종의 펭귄 데이터가 포함되어 있습니다.
library(tidyverse)
library(palmerpenguins)
penguins |> glimpse()
## Rows: 344
## Columns: 8
## island <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgerse…
## bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, …
## body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, …
## year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007…
펭귄 데이터 R 시각화 예제 코드
아래 코드는 palmerpenguins
데이터를 사용하여 부리의 길이와 깊이를 기반으로 펭귄의 종을 시각화하는 방법을 보여줍니다.
library(magrittr)
penguins %%
연산자를 사용하여penguins
데이터 프레임 내의 변수에 직접 접근 할 수 있습니다.
plot()
함수를 사용하여 부리의 길이와 깊이를 기반으로 산점도를 그립니다. 여기서 각 펭귄 종에 따라 점의 색상과 모양을 다르게 표시합니다.cex
, cex.main
, cex.lab
, cex.axis
옵션을 사용하여 그래프 내의 텍스트와 점의 크기를 조절합니다.legend()
함수를 사용하여 범례를 추가합니다.범례에 대하여
R에서 그래프를 그릴 때, 여러 시리즈나 카테고리가 있으면 그래프에 어떤 색이나 모양이 무엇을 나타내는지 알려주는 기능이 필요합니다. 이때 사용하는 것이 범례 (legend) 입니다.
R에서는 legend()
함수를 사용하여 범례를 추가할 수 있습니다. 이 함수는 그래프에 범례를 추가하는 데 매우 유용하며 다양한 옵션을 통해 사용자 정의가 가능합니다. 아래의 간단한 코드를 사용해서 R plot 함수의 범례 기능에 대하여 좀 더 자세히 알아보겠습니다.
plot(
1:10,
rnorm(10),
type = "b",
pch = 21,
bg = c("red", "blue", rep(NA, 8))
)
legend(
"topright",
legend = 1:2,
fill = c("red", "blue"),
title = "범례 제목"
)
R 범례 제목 설정하기
범례에는 제목을 추가할 수 있습니다. legend()
함수의 title
인자를 사용하여 범례의 제목을 지정할 수 있습니다. 위의 예에서, 범례의 제목은 "범례 제목"으로 지정되었습니다.
R 범례 위치 조정하기
legend() 함수에서 범례의 위치는 첫 번째 인자로 지정됩니다. 여기에는 키워드나 좌표를 사용하여 위치를 지정할 수 있습니다. 주요 키워드는 다음과 같이 9가지 중 선택 할 수 있습니다.
- bottomright
- bottom
- bottomleft
- left
- topleft
- top
- topright
- right
- center
위의 예에서, 범례는 그래프의 우측 상단 (topright) 에 위치하게 됩니다.
R 범례 삭제
R plot에서 그래프에 추가된 범례를 직접적으로 삭제하는 함수는 없습니다. 범례를 삭제하려면 그래프를 다시 그리고 legend() 함수를 호출하지 않으면 됩니다.
펭귄 데이터 범례 정보 삽입하기
앞에서 살펴 본 펭귄 데이터에 범례 정보를 추가해보도록 하겠습니다.
penguins %$%
plot(bill_length_mm, bill_depth_mm,
col = c("red", "blue", "green")[species],
pch = c(16:18)[species],
main = "Palmer penguin's Bill length vs depth",
xlab = "Bill length (unit: mm)",
ylab = "Bill depth (unit: mm)",
xlim = c(30, 62), # x축 범위
ylim = c(10, 23), # y축 범위
cex = 1.5, # 점 크기 [c]haracter [ex]tension
cex.main = 2, # 제목 크기
cex.lab = 1.5, # 축 제목 크기
cex.axis = 1.5) # 축 숫자 크기
legend(30, 15,
legend = c("Adelie", "Chinstrap", "Gentoo"),
col = c("red", "blue", "green"),
pch = 16:18)
위의 코드를 살펴보면, 다음의 내용을 확인 할 수 있습니다.
legend()
함수는 그래프의 (30, 15) 위치에 범례를 추가합니다.- 이 범례는 "Adelie", "Chinstrap", "Gentoo"라는 세 가지 펭귄 종류를 항목으로 표시합니다.
- 각 항목에는 빨간색, 파란색, 초록색으로 색을 지정하여 구분합니다.
- 또한 각 펭귄 종류에 대한 점의 모양은 원, 삼각형, 사각형 순으로 표시됩니다.
이렇게 legend()
함수를 사용하면 그래프에 다양한 정보를 표현하는 범례를 효과적으로 추가할 수 있습니다.