2016-02-25 27 views
78

Sto cercando di mantenere la legenda di un livello (liscia) e di rimuovere la legenda dell'altro (punto) con l'argomento show.legend ma la legenda si attacca. Ecco il codice:rimozione della legenda ggplot 2.2

ggplot(a[a$variable=="ratio1",], aes(x=new.cor1, y=value))+ 
    geom_point(aes(x=new.cor1, y=value, color=mntn1...1., show.legend=F), size=0.001)+ 
    geom_point(data=tbl1.cnds1, aes(x=new.cor1.cnds, y=ratio1.cnds), shape=5)+ 
    geom_smooth(data=a, aes(x=new.cor1, y=value, colour=variable, show.legend=T), 
                size=0.5, span=0.05, show.legend=T)+ 
    labs(title="Manhattan plot", x="position", y="zygosity score", colour = "", fill="")+ 
    theme(axis.text.x = element_text(size=11), 
     axis.text.y = element_text(size=18), 
     legend.text=element_text(size=17), 
     legend.key.size = unit(1, "cm"), 
     plot.title=element_text(size=25, vjust=3), 
     plot.margin = unit(c(1,0.9,1,1), "cm"), 
     axis.text=element_text(size=10), 
     axis.title = element_text(size=24), 
     axis.title.y=element_text(margin=margin(r = 13)), 
     axis.title.x=element_text(margin = margin(t = 10)))+ 
    scale_y_continuous(limits = c(0, 1))+ 
    scale_x_continuous(breaks=breaks, labels=labels)+ 
    geom_text(data=tbl1.cnds1, aes(x=new.cor1.cnds, y=ratio1.cnds, label=cnds.gene), 
                    size=2, hjust=-0.2)+ 
    guides(colour=FALSE) 
+3

Un esempio riproducibile minimo sarebbe di gran lunga più semplice. Nella lunga riga del codice sembra che ci sia un sacco di codice non necessario (per il problema in questione) così come non è interamente riproducibile come è scritto attualmente. – mnel

risposta

191

da r cookbook, dove BP è la tua ggplot:

Rimuovere leggenda per una particolare estetica (riempire):

bp + guides(fill=FALSE) 

Può anche essere fatto quando si specifica la scala:

bp + scale_fill_discrete(guide=FALSE) 

Questo rimuove tutte le leggende:

bp + theme(legend.position="none") 
+5

Come risposta ad un commento di @Alex: Si noti che 'theme_bw()' può interferire con qualsiasi definizione eseguita usando 'theme()'. Quando usi 'theme_bw()', assicurati di aggiungerlo alla trama prima di modificare le altre opzioni del tema. – fber

10

imbattuti in questa domanda, ma penso che ci potrebbe essere un'altra soluzione a questo: il codice era:

geom_point(aes(x=new.cor1, y=value, color=mntn1...1., show.legend=F) 

io penso che si debba spostare lo show.legend di fuori dell'estetica chiamare:

geom_point(aes(x=new.cor1, y=value, color=mntn1...1.), show.legend=F) 

poi la leggenda corrispondente dovrebbe scomparire