2013-04-07 11 views
16

Po prostu chcę dodać adnotację do każdego panelu liczb generowanych przez ggplot2; po prostu proste etykiety, takie jak (a), (b), (c) itp. w każdym rogu. Czy istnieje prosty sposób na zrobienie tego?ggplot2: geom_text() z facet_grid()?

+3

Czy masz zdjęcie jako przykład można dodawać? –

+0

Przepraszam, muszę wymyślić, jak publikować zdjęcia ... – hatmatrix

Odpowiedz

27

Od: https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/RL8M7Ut5EpU można użyć następujących:

library(ggplot2) 
x <-runif(9, 0, 125) 
data <- as.data.frame(x) 
data$y <- runif(9, 0, 125) 
data$yy <- factor(c("a","b","c")) 

ggplot(data, aes(x, y)) + 
    geom_point(shape = 2) + 
    facet_grid(~yy) + 
    geom_text(aes(x, y, label=lab), 
     data=data.frame(x=60, y=Inf, lab=c("this","is","the way"), 
      yy=letters[1:3]), vjust=1) 

które należy podać to:

+6

+1, ale czy możesz podać nieco więcej kontekstu, jak to działa? W tej chwili to tylko kawałek kodu i zdjęcie. –

+3

Pewnie. Podstawowe wywołanie 'ggplot' ma ramkę danych z faktycznymi danymi działki dla aspektów' geom_point' 'facet_grid'. Kluczem jest ustawienie nowej ramki danych dla 'geom_text' (utworzonej na bieżąco w fragmencie kodu, ale możesz utworzyć ją poza blokiem' ggplot' i po prostu odwołać się do ramki danych) i dopasować liczbę elementów etykiety do liczba aspektów. Możesz użyć wielu wywołań do 'geom_text', aby umieścić wiele różnych etykiet na różnych aspektach. Zostaną one przywołane po kolei, więc miej to na uwadze. – hrbrmstr

+1

Jeśli chcesz narysować wiele etykiet, nie ma potrzeby wielokrotnego wywoływania parametru geom_text, po prostu dodaj wiersze do pliku data.frame z odpowiednim tekstem i zmiennymi facet_grid. –

5

Zasadniczo tworzysz data.frame z tekstem, który zawiera kolumnę z tekstem oraz kolumnę ze zmiennymi, których używasz do facet_grid. Następnie można po prostu dodać geom_text z tym data.frame. Więcej informacji na temat umieszczania tekstu i innych znajdziesz w dokumentacji geom_text.

Powiązane problemy