2016-01-29 1 views
2

Может ли кто-нибудь объяснить мне, как получить полный контроль над легендами в ggplot2 с двумя кадрами данных с разными x-масштабами, представленными в двух разных геометриях. «Name1» и «name2» - это функция, созданная с помощью другой функции фильтрации.Управление легендами с двумя кадрами данных разных x-масштабов и разных геометров в ggplot2

This is the plot1. Почему форма geom_point появляется в легенде для «Группы 1»? Я ожидаю, что легенда покажет только цвет в группе 1 и форму для группы 2.

Возможно ли перестроить легенды? i.e Group2 появляется сначала в строке.

df1 <- data.frame(g1 = c("a", "b", "c", "e"), 
        y1 = c(12, 8, 3, 20)) 
df2 <- data.frame(g1 = letters[1:5], 
        y1 = 20:24) 
name1 <- "Group 1" 
name2 <- "Group 2" 

require(ggplot2) 
ggplot(NULL, aes(x=g1, y=y1)) + 
    geom_bar(data = df1, stat = "identity", 
      aes(fill=factor(name1))) + 
    geom_point(data = df2, stat = "identity", 
       size = 5, shape = 2, aes(fill=factor(name2))) + 
    theme(plot.margin = unit(c(2,1,1,1), "lines"), 
        plot.title = element_text(hjust = 0, size=18), 
        axis.title = element_text(face = "bold", size = 12), 
        legend.position = 'top', 
        legend.text = element_text(size = 12), 
        legend.title = element_blank()) 

ответ

0

Ключ для определения fill и shape в обоих aes(). Затем вы можете определить shape и fill как NA для того, который вам не нужен.

ggplot(NULL, aes(x=g1, y=y1)) + 
    geom_bar(data = df1, stat = "identity", aes(fill=name2, shape=name2)) + 
    geom_point(data = df2, size = 5, aes(shape=name1, fill=name1)) + 
    theme(plot.margin = unit(c(2,1,1,1), "lines"), 
     plot.title = element_text(hjust = 0, size=18), 
     axis.title = element_text(face = "bold", size = 12), 
     legend.position = 'top', 
     legend.text = element_text(size = 12), 
     legend.title = element_blank()) + 
    scale_shape_manual(values=c(2, NA)) + 
    scale_fill_manual(values=c(NA, "red")) + 
    guides(fill = guide_legend(reverse = TRUE), 
     shape = guide_legend(reverse = TRUE)) 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^