이
library(ggplot2)
qplot(1,1) +
annotation_compass('testN') +
annotation_compass('testE','E') +
annotation_compass('testSW','SW') +
annotation_compass('testW','W')
annotation_compass <- function(label,
position = c('N','NE','E','SE','S','SW','W','NW'),
padding = grid::unit(c(0.5,0.5),"line"), ...){
position <- match.arg(position)
x <- switch (position,
N = 0.5,
NE = 1,
E = 1,
SE = 1,
S = 0.5,
SW = 0,
W = 0,
NW = 0
)
y <- switch (position,
N = 1,
NE = 1,
E = 0.5,
SE = 0,
S = 0,
SW = 0,
W = 0.5,
NW = 1
)
hjust <- switch (position,
N = 0.5,
NE = 1,
E = 1,
SE = 1,
S = 0.5,
SW = 0,
W = 0,
NW = 0
)
vjust <- switch (position,
N = 1,
NE = 1,
E = 0.5,
SE = 0,
S = 0,
SW = 0,
W = 0.5,
NW = 1
)
f1 <- switch (position,
N = 0,
NE = -1,
E = -1,
SE = -1,
S = 0,
SW = 1,
W = 1,
NW = 1
)
f2 <- switch (position,
N = -1,
NE = -1,
E = 0,
SE = 1,
S = 1,
SW = 1,
W = 0,
NW = -1
)
annotation_custom(grid::textGrob(label,
x=grid::unit(x,"npc") + f1*padding[1] ,
y=grid::unit(y,"npc") + f2*padding[2],
hjust=hjust,vjust=vjust, ...))
}
, 오히려 상세하게 정의되어 래퍼하지만 방법 단위와 정당성을 작성 확실히 공급
영리한 아이디어를 가능 빈 data.frame. 주석을 피하는 이유는 무엇입니까? – CCurtis
텍스트 요소에 중점을 둡니다. 그리드 운영체제 (esp를 목표로 함)로 포스트를 플롯하는 것이 더 쉽습니다.하지만 여유 시간에는 ggplot2를 많이 사용하므로 많은 사람들이 그렇게하지 않습니다. 장기적으로, 나는 대개 패싯을 다르게 주석 처리해야하며 결국 주석을 사용한 것을 잊지 않고 vs를 추가 할 수 있습니다. 단지 개인적인 취지. – hrbrmstr
패싯이 작동하게되면'annotate '는 작동하기가 어려워서 보통 데이터 프레임과'geom_text'에 의존합니다. 그러나 이와 같은 간단한 경우에는'annotate '가 더 분명한 선택입니다. – jdobres