1. Date-time position scales
date_breaks 인자를 이용해 그래프의 눈금을 연,월,주,일,시간,분 단위로 마크할 수 있다.
실습을 통해 공부해보자.
date_base <- ggplot(economics, aes(date, psavert)) +
geom_line(na.rm = TRUE) +
labs(x = NULL, y = NULL)
date_base
우선 economics data의 date와 pasavert의 관계를 결측치를 무시하고 date_base에 객체화하였다.
이제 date_base에 scale_x_date함수의 date_breaks인자를 다양하게 적용해보자.
date_base + sclae_x_date(date_breaks = '15 years')
date_base + scale_x_date(breaks = scales::breaks_width("15 years"))
braeks 인자에 scales 패키지의 breaks_width함수를 사용해서 일정간격 시간 스케일을 만드는 방법도 있다.
위의 date_breaks 인자는 offset(시작)을 설정하기가 어려워서 교수님은 scales 패키지의 breaks_width를 사용해 breaks를 설정하는 걸 권장하셨던 것 같다.
2. Labels
base <- ggplot(economics, aes(date, psavert)) +
geom_line(na.rm = TRUE) +
labs(x = NULL, y = NULL)
head(base)
base인자에 위와같이 선그래프를 객체화시켜놨다. 앞서 배운 date_breaks 인자를 사용하여 5년 간격으로 scale을 맞추겠다.
base + scale_x_date(date_breaks = '5 years')
눈금에 대한 라벨링을 date_label 인자를 사용해 설정할 수 있다.
1. 십의자리 연도만으로 라벨링
base + scale_x_date(date_breaks = '5 years', date_labels = '%y')
십의자리 연도만 뽑아낸 것을 확인할 수 있다.
base + scale_x_date(date_breaks = '5 years', date_labels = '%Y')
base + scale_x_date(date_breaks = "5 years", date_labels = "%d/%m/%Y")
위 처럼 대문자Y는 연도를 천의자리까지 모두 보여주고 %d,%m,%Y는 각각 day, month, year을 의미하여 이것들을 보여준다.
base + scale_x_date(date_breaks = "5 years", date_labels = "%m--%y")
이런식으로 --을 월, 연도사이에 넣어 커스튬도 가능해보인다.
lim <- as.Date(c('2004-01-01', '2005-01-01'))
base_lim <- base + scale_x_date(limits = lim)
base_lim
2004년 1월1일 부터 2005년 1월1일로 scale limit을하여 base_lim에 객체화했다.
base_lim + scale_x_date(date_labels = '%B/n%Y')
date_labels에 %b나 %B를 넣어주면 각각 1월의 경우 Jan, January를 반환한다.
저는 맥유저라서 제대로 안나오는데 이거 제대로 나오게하는 방법아시는 분들 계시나요
3. Discrete position scales.
앞에서는 연속형 변수나, date 변수에 대해서 scale을 변경해보았다. 이번엔 이산형으로 실습을 진행해보겠다.
toy <- data.frame(
const = 1,
up = 1:4,
txt = letters[1:4],
big = (1:4)*1000,
log = c(2, 5, 10, 2000)
)
toy
base <- ggplot(toy, aes(const, txt)) +
geom_label(aes(label = txt)) +
scale_x_continuous(breaks = NULL) +
labs(x = NULL, y = NULL)
base
이산형 데이터 중 string type의 데이터는 scale_*_discrete()함수의 limits 옵션으로 scale의 위치를 바꿀 수도 있다.
base + scale_y_discrete(limits = c("d", "c", "a", "b"))
base + scale_y_discrete(breaks = c("b", "c"))
원하는 값만 보이는 것도 가능하다.
특정값에 대해 다른 이름으로 보이게 하는 것도 가능하다.
base + scale_y_discrete(labels = c(c = "carrot", b = "banana"))
4. guides(* = guide_axis(n.dodge = ))
이산형 데이터 중 value의 값이 긴 숫자나 긴 문자열인 경우 시각화에 어려움이 있다.
base <- ggplot(mpg, aes(manufacturer, hwy)) + geom_boxplot()
base
'land rover' 와 'lincoln'의 경우 두 문자열이 붙어 가독성이 떨어진다. 이런 경우에 사용하는 방법이다.
base + guides(x = guide_axis(n.dodge = 3))
base + guides(x = guide_axis(angle = 90))
다양한 방법이 있다.
5. bin graph scales
ggplot(mpg, aes(hwy)) +
geom_histogram(bins = 8)
bins 인자를 사용하여 8개의 막대를 이용해 histo를 표현하도록한다.
hwy의 데이터를 8개의 구간으로 나누어 각 빈에 속하는 데이터의 수를 막대의 높이로 표현한다.
ggplot(mpg, aes(hwy)) +
geom_bar() +
scale_x_binned(n.breaks = 8)
scale_x_binned(n.breaks = 8)은 histogram의 bins와 다르게 x축의 표시 방식을 조정하는데 사용되며 이는 hwy 데이터의 그룹화 방식에는 영향을 미치지 않는다. 즉, 축을 8개의 동일한 너비로 구간을 나누고 해당하는 count을 세어주는 셈이다.
'R > Exploratory data analysis' 카테고리의 다른 글
R for Data Science::transformation2 ; grouped (0) | 2023.06.07 |
---|---|
R for Data Science::transformation (0) | 2023.06.06 |
ggplot2::Position scales and axes (0) | 2023.05.21 |
ggplot2::geom fuctions (0) | 2023.04.24 |
ggplot2:: geom_graphs (0) | 2023.04.24 |