ggplot2 tips
몇 가지 ggplot2
팁
x
가 factor
일 때 geom_line()
x
가 factor
일 때에는 geom_line()
이 그려지지 않는다. 예를 들어,
library(ggplot2)
library(dplyr)
dat = data.frame(gender=sample(c("M", "F"), 100, replace=TRUE),
y = rnorm(100) + 10)
datMean = dat %>% group_by(gender) %>% summarise(meany=mean(y))
dat %>% ggplot(aes(x=gender, y=y)) +
geom_point(alpha=0.3) +
geom_line(data=datMean, aes(x=gender, y=meany)) +
geom_point(data=datMean, aes(x=gender, y=meany), size=3)
## geom_path: Each group consists of only one observation. Do you need to ## adjust the group aesthetic?
이때 메시지를 자세히 보자.
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
dat %>% ggplot(aes(x=gender, y=y)) +
geom_point(alpha=0.3) +
geom_line(data=datMean, aes(x=gender, y=meany, group=1)) +
geom_point(data=datMean, aes(x=gender, y=meany), size=3)
간단한 해결방법은 geom_line()
의 aes()
안에 group=1
을 넣는 것!
shape
이 모자라!
x <- rexp(100)
y <- rexp(100)
kind <- sample(LETTERS[1:10], 100, replace=TRUE)
dat = data.frame(x=sort(x), y=y, kind=kind)
dat %>% ggplot(aes(x=x,y=y,col=kind, shape=kind, linetype=kind)) +
geom_line() +
geom_point(size=2)
## Warning: The shape palette can deal with a maximum of 6 discrete values ## because more than 6 becomes difficult to discriminate; you have ## 10. Consider specifying shapes manually if you must have them.
## Warning: Removed 43 rows containing missing values (geom_point).
R에서 기본으로 지정해주는 shape
의 갯수는 6개 뿐이다. (사실 모양이 6개 이상 달라지면 구분하기 힘들긴 하다. 하지만 linetype
은 더 힘들잖아?) 어쨋든 이를 늘릴려면, scale_shape_manual(values= )
를 활용할 수 있다.
dat %>% ggplot(aes(x=x,y=y,col=kind, shape=kind, linetype=kind)) +
geom_line() +
geom_point(size=2) +
scale_shape_manual(values=1:nlevels(factor(kind)))
위의 코드에서 scale_shape_manual(values= )
에는 1
부터 10
까지 들어간다.
모양(shape
)에서 values=
에 지정되는 수의 의미는 다음과 같다.
Leave a comment