Idealim
article thumbnail
Published 2023. 12. 9. 02:05
[R 데이터시각화] ggplot Data/R

이번 글에서는 R의 데이터 시각화 패키지인 `ggplot`에 대해 알아보겠습니다. 저번 글에서는 R의 내장 함수인 `plot` 함수에 대해 다뤘는데요.

따라서 저번 글에서 다룬 plot의 주요 파라미터들에 대해 알고 있다고 가정하고 설명하겠습니다. 잘 모르시는 경우 먼저 해당 을 참고해주세요! 

ggplot 에 대하여..

`ggplot2`는 R에서 사용되는 강력하고 유연한 그래픽 패키지입니다.

ggplot의 주요 객체

ggplot2로 생성된 그림은 R의 객체로 구성되는데요. ggplot의 주요 객체를 살펴보면 다음과 같습니다.

  • `ggplot 객체`: 그래픽을 생성하는 기본 객체입니다.
  • 하위 객체 
    • `aes 객체`: 미적 매핑을 정의하기 위한 객체입니다. 
    • `geom 객체`: 기하학적 객체를 추가하여 그래프의 형태를 정의합니다.
    • `theme 객체` : 그래프의 배경색, 폰트, 선의 종류 등 그래프의 외관이나 레이아웃을 조절하기 위한 객체입니다. 
    • `labs 객체`: 그래프의 제목이나 축 레이블을 조절하기 위한 객체입니다. 
    • `coord 객체`: 좌표 시스템을 정의하기 위한 객체입니다.

ggplot 설치 및 불러오기

# 설치
install.packages("ggplot2")
# 불러오기
library(ggplot2)

qplot

`qplot`"Quick Plot"의 줄임말로, ggplot2 패키지에서 제공하는 간단한 그래프 생성 함수 중 하나입니다.  바로 qplot 함수를 통해 plot을 그려보겠습니다. 

library(ggplot2)
library(gridExtra)
x <- c(0.5, 1.2, 2.6, 3.2)
y <- c(1.1, 1.6, 3.3, -1.1)
plot1 <- qplot(x, y, main = "title", xlab="x axis", ylab="y axis")
plot2 <- qplot(x, y, main = "geom = \"blank\"", xlab="x axis", ylab="y axis", geom="blank")
grid.arrange(plot1, plot2, ncol = 2) # par(mfrow=c(1,2)) 동일한 기능
  • `main`, `xlab`, `ylab` : plot() 함수의 인자와 동일합니다.
  •  `geom` : plot의 타입을 정하는 파라미터로, plot()의 type 역할을 대체합니다. geom에 대해서는 아래에서 자세히 다루겠습니다.
  • `gridExtra`: 여러 개의 그래프를 배열로 표시하거나 조작하는 데 사용하는 패키지입니다.
    • `grid.arrange`: 여러 개의 grid 그래픽 객체를 하나의 그림으로 배열합니다.

geom

`geom_point` 함수는 산점도를 추가하고, `geom_line` 함수는 선을 추가합니다.

위에서 생성한 plot2 객체에 산점도와 선을 추가해보겠습니다.

qplot(x, y, main = "title", xlab="x axis", ylab="y axis", geom="blank") +
  geom_point(size=2, shape=6, color='blue') +
  geom_line(color='red', linetype=2)

`geom_point` 의 주요 파라미터

  • size: 점의 크기를 설정합니다.
  • color: 점의 색상을 설정합니다.
  • shape: 점의 모양을 설정합니다. 여러 가지 숫자나 문자열로 표현될 수 있습니다.
  • fill: 점의 내부를 채우는 색상을 설정합니다.
  • alpha: 점의 투명도를 설정합니다.
  • stroke: 점의 테두리 색상을 설정합니다.

`geom_line` 의 주요 파라미터

  • size: 선의 굵기를 설정합니다.
  • color: 선의 색상을 설정합니다.
  • linetype (lty): 선의 종류를 설정합니다. 예를 들어, 실선("solid"), 점선("dashed") 등이 있습니다.
  • alpha: 선의 투명도를 설정합니다.
  • group: 그룹을 지정하여 여러 개의 선을 그릴 때 사용합니다.
  • inherit.aes: 상위 미적 매핑을 사용할지 여부를 설정합니다.

qplot(x, y, main = "title", xlab="x axis", ylab="y axis", geom="blank") +
  geom_hline(yintercept = c(0,2), lty=3) +
  geom_vline(xintercept = c(1,2)) +
  geom_segment(mapping=aes(x=1,y=1,xend=5,yend=1),color="orange")

`geom_hline`, `geom_vline`은 각각 가로선과 세로선을 그립니다. (참고로 `geom_abline`으로 대체가능)

  • xintercept: 가로선의 y축 위치를 지정합니다. (geom_hline)
  • yintercept: 세로선의 x축 위치를 지정합니다. (geom_vline)

`geom_segment`는 두 점을 연결하는 선(segment)을 추가합니다.

  • x, y: 시작점의 x, y 좌표를 지정합니다.
  • xend, yend: 끝점의 x, y 좌표를 지정합니다.

aes

`aes` "Aesthetic Mapping(미적 매핑)"의 약자로, 데이터의 변수에 그래프의 시각 속성값을 매핑할 때 사용됩니다.

바로 예제를 통해 알아보겠습니다.

x <- 1:10
y <- c(-1,2,5,-2,-3,0,6.2,1.5,-3.4,-8.1)
# 카테고리 나누기
ptype <- rep(NA,length(x=x))
ptype[y>0] <- "over_0"
ptype[y<0] <- "less_0"
ptype[y==0] <- "0"
ptype <- factor(x=ptype)
ptype

# plot
qplot(x,y, color=ptype, shape=ptype) +
  geom_line(mapping=aes(group=ptype))
  • `ptype` : y 데이터의 카테고리(factor) 변수
  • ptype의 level에 따라 color, shape, line을 매핑하였습니다.

 

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.