2016-02-25 42 views
78

Próbuję zachować legendę jednej warstwy (gładka) i usunąć legendę z drugiej (punkt) argumentem show.legend, ale legenda się trzyma. Oto kod:usuwanie legendy 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

minimalny powtarzalne przykładem może być znacznie prostsze. W długiej linii kodu wydaje się, że jest dużo niepotrzebnego (do problemu) kodu, a także że jest on zupełnie nieodtwarzalny, ponieważ jest obecnie napisany. – mnel

Odpowiedz

191

od r cookbook, gdzie bp to ggplot:

Usuń legenda dla konkretnej estetyki (wypełnienie):

bp + guides(fill=FALSE) 

To może być również wykonane przy określaniu skala:

bp + scale_fill_discrete(guide=FALSE) 

ta usuwa wszystkie legendy:

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

Jako odpowiedź na komentarz przez @Alex: Zauważ, że 'theme_bw()' może kolidować z dowolnymi definicjami wykonanymi za pomocą 'theme()'. Używając 'theme_bw()', pamiętaj o dodaniu go do wykresu zanim zmienisz inne opcje motywu. – fber

10

Natknęliśmy się na to pytanie, ale myślę, że może być inne rozwiązanie to: kod był:

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

Chyba trzeba przesunąć show.legend poza estetyką zadzwoń:

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

następnie legenda korespondent powinien zniknąć

Powiązane problemy