Come annotare bene un ggplot2 (manuale)

Usando ggplot2 normalmente uso geom_text e qualcosa come position=jitter per annotare i miei grafici.

Tuttavia, per una bella trama, spesso trovo utile annotare manualmente. come di seguito:

 data2 <- structure(list(type = structure(c(5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L), .Label = c("EDS", "KIU", "LAK", "MVH", "NA*"), class = "factor"), value = c(0.9, 0.01, 0.01, 0.09, 0, 0.8, 0.05, 0, 0.15, 0, 0.41, 0.04, 0.03, 0.52, 0, 0.23, 0.11, 0.02, 0.64, 0.01), time = c(3L, 3L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 27L, 27L, 27L), year = c(2008L, 2008L, 2008L, 2008L, 2008L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2006L, 2006L, 2006L, 2006L, 2006L)), .Names = c("type", "value", "time", "year"), row.names = c(1L, 3L, 4L, 5L, 6L, 7L, 9L, 10L, 11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 21L, 22L, 23L, 24L), class = "data.frame") ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw()+ annotate("text", x=6, y=0.9, label="this is a wrong color")+ annotate("text", x=15, y=0.6, label="this is a second annotation with a wrong color") 

Il problema è che non riesco a ottenere il colore delle annotazioni di testo in modo che corrisponda al colore della linea. Immagino di poter risolvere questo problema con una scala manuale, ma spero che ci sia un modo migliore?

Se usi geom_text () invece di annotate () puoi passare un colore di gruppo alla trama:

 ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(aes(7, .9, label="correct color", color="NA*")) + geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

Quindi usando annotate () assomiglia a questo: alt text http://sofit.miximages.com/r/before.png

quindi dopo aver usato geom_text () appare così: alt text http://sofit.miximages.com/r/after.png

Ho avuto un problema simile e l’ho risolto con la risposta JD Long. Ma come risultato ggplot2 di ggplot2 alla versione 0.9.0 ho notato che tutte le chiamate geom_text() sono state rese un po ‘sfocate sui grafici.

Grazie a kohske ho scoperto che questo codice

 ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(aes(7, .9, label="correct color", color="NA*")) + geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

traccia i tempi di geom_text nrow(data2) !

Il modo corretto di fornire dati a geom_text è build un data.frame diverso tenendo coordinate, etichette e colors per le stringhe che si desidera tracciare:

 data2.labels <- data.frame( time = c(7, 15), value = c(.9, .6), label = c("correct color", "another correct color!"), type = c("NA*", "MVH") ) ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(data = data2.labels, aes(x = time, y = value, label = label))