2013-06-06 16 views
9

È necessario utilizzare i sub/apici nelle etichette della legenda. Tuttavia, se utilizzo il parametro label delle rispettive scale, il colore e la scala di riempimento non sono più combinati.Combina legende di riempimento e colore quando si utilizzano le etichette di espressione

C'è un modo per risolvere questo o un altro modo di usare sub/apici in legende?

DF <- data.frame(x=1:10,y=(1:10)^2, 
       ymax=(1:10)^2.2, 
       ymin=(1:10)^1.8, 
       fac=rep(c("a","b"),each=5)) 

library(ggplot2) 
p <- ggplot(DF,aes(x=x,y=y,ymin=ymin,ymax=ymax,colour=fac,fill=fac)) + 
    geom_line() + 
    geom_ribbon(alpha=0.5) 

print(p) 

enter image description here

p + scale_color_discrete(labels=c("a"=expression(a[{foo}]), 
            "b"=expression(b[{bar}]))) + 
    scale_fill_discrete(labels=c("a"=expression(a[{foo}]), 
            "b"=expression(b[{bar}]))) 

enter image description here

risposta

6

Non così elegante soluzione è rimuovere fill leggenda e quindi utilizzare override.aes= entro guides() funzione per color= leggenda. Per questa legenda possiamo impostare i nostri valori fill=. L'unico problema è che devi conoscere i nomi dei colori. Penso che sarebbe più facile con scale_color_manual() perché già fornisci i tuoi valori di colore.

p + scale_color_discrete(labels=c("a"=expression(a[{foo}]), 
            "b"=expression(b[{bar}]))) + 
    scale_fill_discrete(guide="none")+ 
    guides(color=guide_legend(override.aes=list(fill=c("#F8766D","#00BFC4")))) 

enter image description here

+0

Grande. Puoi usare 'n <- 2; hcl (h = seq (15, 375-360/n, lunghezza = n) %% 360, c = 100, l = 65) 'per ottenere i colori [(origine)] (http://osdir.com/ml /ggplot2/2011-08/msg00223.html). – Roland

Problemi correlati