R Graphics Cookbook을 기반으로 하여 작성하였습니다.
Scatterplot을 그리고 싶어요.
어떻게 하면 될까요?
일단, 가상의 데이터를 생성하고 만들어 볼게요.
set.seed(955) # Seed값 세팅
# 가상의 데이터 생성
dat <- data.frame(cond = rep(c("A", "B"), each=10),
xvar = 1:20 + rnorm(20,sd=3),
yvar = 1:20 + rnorm(20,sd=3))
head(dat)
library(ggplot2) # ggplot2 패키지 로딩
회귀선이 있는 기본 산점도
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1) # 속이 빈 원 사용
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1) + # 속이 빈 원 사용
geom_smooth(method=lm) # 선형 회귀선 추가 (기본적으로 95% 신뢰 영역 포함)
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1) + # 속이 빈 원 사용
geom_smooth(method=lm, # 선형 회귀선 추가 (기본적으로 95% 신뢰 영역 포함)
se=FALSE) # 음영 처리된 신뢰 영역을 추가 X
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1) + # 속이 빈 원 사용
geom_smooth() # 신뢰구간 영역과 함께 loess smoothed fit curve 추가
다른 변수로 색상/모양 설정
# cond 변수에 따른 색상 설정
ggplot(dat, aes(x=xvar, y=yvar, color=cond)) + geom_point(shape=1)
# 동일하지만 색상이 다르고 회귀선 추가
ggplot(dat, aes(x=xvar, y=yvar, color=cond)) +
geom_point(shape=1) +
scale_colour_hue(l=50) + # 평소보다 약간 어두운 팔레트 사용
geom_smooth(method=lm, # 선형 회귀선 추가
se=FALSE) # 음영 처리된 신뢰 영역을 추가 X
# 데이터 영역을 넘어 회귀선 확장
ggplot(dat, aes(x=xvar, y=yvar, color=cond)) +
geom_point(shape=1) +
scale_colour_hue(l=50) + # 평소보다 약간 어두운 팔레트 사용
geom_smooth(method=lm, # 선형 회귀선 추가
se=FALSE, # 음영 처리된 신뢰 영역을 추가 X
fullrange=TRUE) # 회귀선 확장
# cond에 의한 모양 설정
ggplot(dat, aes(x=xvar, y=yvar, shape=cond)) + geom_point()
# 같지만 다른 모양으로
ggplot(dat, aes(x=xvar, y=yvar, shape=cond)) +
geom_point() +
scale_shape_manual(values=c(1,2)) # 속이 빈 원과 삼각형 사용
오버 플로팅 처리
데이터 포인트가 많거나 데이터 스케일이 불연속적인 경우 데이터 포인트가 겹칠 수 있으며,
동일한 위치에 많은 포인트가 있는지 확인하는 것이 불가능합니다.
# xvar 및 yvar를 가장 가까운 5로 반올림
dat$xrnd <- round(dat$xvar/5)*5
dat$yrnd <- round(dat$yvar/5)*5
# 1/4 불투명도로 각 점을 부분적으로 투명하게 생성
# 과도한 오버 플로팅의 경우 더 작은 값을 사용
ggplot(dat, aes(x=xrnd, y=yrnd)) +
geom_point(shape=19, # 실선 사용
alpha=1/4) # 1/4 불투명도
# Jitter the points
# 지터 범위는 x축에서 1, y축에서 .5
ggplot(dat, aes(x=xrnd, y=yrnd)) +
geom_point(shape=1, # 속이 빈 원 사용
position=position_jitter(width=1,height=.5))
반응형
'R 프로그래밍 > R 데이터 시각화' 카테고리의 다른 글
[R 그래픽스] 제목(Title) 달기 (0) | 2022.01.23 |
---|---|
[R 그래픽스] 분포 그리기 (0) | 2022.01.16 |
[R 그래픽스] 평균(means)과 오차(error) 막대그래프 그리기 (0) | 2022.01.08 |
[R 그래픽스] 막대(Bar) 및 선(Line) 그래프 그리기 (0) | 2021.12.30 |
개요 (0) | 2021.12.27 |
댓글