2015-09-25 1 views
2

Мои данные:Legend в ggplot2, удалить уровень

df <- data.frame(sp = c(LETTERS[1:8]), 
       tr = c("NS", "LS", "NS", "LS", "LS", "HS", "HS", "HS"), 
       bv = c(14, 5, 11, 5.6, 21, 5.4, 2, 4.8), 
       av = c(0.0, 14, 21, 48.4, 15, 55.6, 37, 66.2)) 

я штриховой участок

library(reshape2) 
df1 <- melt(df, id.vars = c("sp", "tr")) 

ggplot(aes(sp, value, fill = variable) , data = df1) + theme_classic() + 
    geom_bar(aes(lty = tr), lwd = 1.2, data = df1, stat = "identity", colour = "black", width =.8) + 
    theme(legend.position = "bottom") + 
    scale_linetype_discrete(name = "ja") 

Выходной enter image description here То, что я не люблю, является легендой. Я хотел бы иметь только тип линий из второй части «ja» и удалить «variable». Я хотел бы иметь белый фон в коробках с легендой, а не в сером.

ответ

5

Вы можете удалить variable легенду, установив fill = FALSE в guides и изменить BackgroundColor с override.aes в guide_legend (также внутри guides) следующим образом:

ggplot(df1, aes(sp, value, fill = variable)) + 
    geom_bar(aes(lty = tr), lwd = 1.2, stat = "identity", colour = "black", width =.8) + 
    scale_linetype_discrete(name = "ja") + 
    guides(fill = FALSE, 
     lty = guide_legend(override.aes = list(lty = c('dotted', 'dashed', 'solid'), 
               fill = "white"))) + 
    theme_classic() + 
    theme(legend.position = "bottom") 

это приводит к следующему сюжету:

enter image description here