Domanda

Utilizzando ggplot2 normalmente io uso geom_text e qualcosa come position=jitter per annotare le mie trame.

Tuttavia - per una trama piacevole spesso trova la pena di 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 del testo delle annotazioni per abbinare il colore della linea. Suppongo che potrei risolvere questo problema con una scala manuale, ma spero che ci sia un modo migliore?

È stato utile?

Soluzione

Se si utilizza geom_text () al posto di Annotate () è possibile passare un colore 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, utilizzando annotare (), che appare così: http://www.cerebralmastication.com/wp-content/uploads/2010/ 03 / before.png

poi dopo aver usato geom_text (), che appare così: http://www.cerebralmastication.com/wp-content/uploads/2010/ 03 / after.png

Altri suggerimenti

Ho avuto un problema simile e risolto con la risposta JD Long. Ma come risultato di un ggplot2 l'aggiornamento alla versione 0.9.0 ho notato che tutti i geom_text()calls resi un po 'sfocata nelle piazzole.

Grazie alla 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 la nrow(data2)times geom_text!

Il modo corretto per la fornitura di dati da geom_text sta costruendo un data.frame diversa tenendo coordinate, etichette e colori 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))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top