2010-03-10 3 views
11

JD Long이 도와주었습니다 : question about manual annotation.다른 패싯에있는 다른 레이블로 ggplot에 수동으로 주석 달기

그러나 facetted 줄거리에서 라벨 스타일이 linestyle (aestetics)에 해당하고 다른 패싯에 개별적으로 주석을 추가 할 수 있도록 비슷한 작업을 수행 할 수 있습니까?

일부 데이터 :

funny <- structure(list(Institution = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Q-branch", 
"Some-Ville", "Spectre"), class = "factor"), Type = structure(c(5L, 
6L, 1L, 3L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L), .Label = c("Korte videregående uddannelser", 
"Mammas beer", "Mellemlange videregående uddannelser", "Tastes good", 
"Unknown", "Your"), class = "factor"), År = c(2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2006L, 2006L, 
2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 
2006L), Mndr = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L), Data = c(159L, 
NA, NA, 23L, 204L, NA, NA, 12L, 256L, NA, NA, 24L, 166L, 6L, 
NA, 43L, 228L, NA, NA, 20L, 196L, 11L, NA, 37L, 99L, 14L, 9L, 
96L, 147L, 7L, 5L, 91L, 100L, 10L, 7L, 126L, 60L, 17L, 6L, 106L, 
78L, 18L, 13L, 140L, 48L, 23L, 5L, 136L)), .Names = c("Institution", 
"Type", "År", "Mndr", "Data"), class = "data.frame", row.names = c(NA, 
-48L)) 

그리고 각면 줄거리 : 당신의 도움에 미리

ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type)) + 
    geom_line() + 
    facet_grid(.~Institution) 

감사합니다!

+0

@Shane : 저는 이것이 중복이라고 생각하지 않습니다. Andreas는 플롯에서 값을 계산하기 위해 데이터를 사용하고 싶지 않고 라인의 스타일과 일치하도록 라벨을 포맷합니다. – Aniko

+0

@Shane 관심을 가져 주셔서 감사합니다. 애니코의 대답은 내가 바라는 바로 그 것이다. 그래서 더 명확히 할 필요가 없다고 생각합니까? 이유의 후세가 아니라면. 다시 한번 감사드립니다. – Andreas

+0

관련 질문 : http://stackoverflow.com/questions/2050610/creating-a-facet-wrap-plot-with-ggplot2-with-different-annotations-in-each-plot – Shane

답변

15

각 수동 주석에 대해 레이블뿐만 아니라 패널, 색상 등을 정의하는 모든 변수를 정의해야한다는 아이디어가 있습니다. 다음 코드는 서로 다른 패널에 두 개의 레이블을 추가합니다.

pl <- ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type))+geom_line() 
     +facet_grid(.~Institution) #your plot 
nd <- data.frame(Institution=c("Q-branch","Some-Ville"), #panel 
       Type=c("Unknown", "Tastes good"),  #color 
       Mndr=c(7,12),       #x-coordinate of label 
       Data= c(170,50),       #y-coordinate of label 
       Text=c("Label 1", "Label 2"))   #label text 
# add labels to plot: 
pl <- pl + geom_text(aes(label=Text), data=nd, hjust=0, legend=FALSE) 
pl 

legend=FALSE 옵션은 작은의 범례에 추가되지 않습니다 텍스트를 나타내는 것을 보장합니다. 레이블에 대한 데이터 프레임이 없어도 각각에 대해 geom_text을 가질 수 있지만이 방법이 더 간단합니다.

+0

내가 알 수있는 한 수동, 새로운 ggplot 구문이 조금 변경되었습니다. legend = FALSE가되었습니다. 이제 show_guide = FALSE입니다. – PatrickT

+0

질문의 코드뿐만 아니라 대답의 코드에서도 플롯을 재현하려고 시도하지만 두 플롯 모두 동일합니다. 후자의 경우 텍스트는 플롯에 쓰여지지 않습니다. 내 ggplot2 (2.1.0) 버전에서 뭔가 바뀌 었습니까? – Robert

관련 문제