2017-05-09 3 views
0

Ich habe den folgenden Code hinzuzufügen:Wie ggrepel Text für ggplot geom_line Dichte

set.seed(10) 
foo <- data.frame(
    v2=sample(c(1,2,3),size=10,rep=T), 
    v3=as.factor(sample(c('cat','dog'),10,rep=T)) 
) 

library(ggplot2) 
library(ggrepel) 
ggplot(foo, aes(x=v2, colour=v3, group=v3)) + 
    geom_line(aes(group=v3), stat='density', alpha=0.3) 

die in diesem Plot produziert:

enter image description here

ich versuchen, diese Zugabe:

geom_text_repel(aes(x=v2, label = v3)) + 

Aber es gibt:

Error: geom_text_repel requires the following missing aesthetics: y 

Meine Frage ist, wie kann ich Ggrepel verwenden, um die Etiketten wie im Bild oben angezeigt anzuzeigen?

Antwort

2

Sie könnten tun

set.seed(10) 
foo <- data.frame(
    v2=sample(c(1,2,3),size=10,rep=T), 
    v3=as.factor(sample(c('cat','dog'),10,rep=T)) 
) 
library(ggplot2) 
ggplot(foo, aes(x=v2, colour=v3, group=v3)) + 
    geom_line(aes(group=v3), stat='density', alpha=0.3) -> p 
pdat <- ggplot_build(p)$data[[1]] 
idx <- sample(seq_len(nrow(pdat)), 20) 
p + ggrepel::geom_text_repel(
    aes(x,y,label=txt), 
    cbind(pdat[idx,], txt=paste0("txt", seq_along(idx))), 
    inherit.aes=F, 
    show.legend = F, 
    color="red", 
    segment.colour = "black", 
    min.segment.length = unit(0, "lines") 
) 
Verwandte Themen