2015-01-22 20 views
1

Как показать легенду для следующего графика штриховки ggplot?Показать легенду для штрихового графика в ggplot

tmp <- data.frame(group = LETTERS[1:10], id = 10:1, a = runif(10), b = runif(10)) 

ggplot(tmp) + geom_bar(aes(x = reorder(group, id), a + b, group = 1), stat = 'identity') 

Обновление: У меня есть две диаграммы расположены с использованием grid.arrange из gridExtra. Оба графика имеют одинаковое количество баров, но есть легенда. Я подумал, что, добавив любую легенду на втором графике, я выравнивать стержни (сделать ширину участка площадью обоих участков одинаковы):

tmp <- data.frame(group = LETTERS[1:10], id = 10:1, 
        a = runif(10), b = runif(10), c = rnorm(10)) 

p1 <- ggplot(tmp) + geom_bar(aes(x = reorder(group, id), c, fill = a), stat = 'identity') 
p2 <- ggplot(tmp) + geom_bar(aes(x = reorder(group, id), a + b, group = 1), stat = 'identity') 

library(gridExtra) 

grid.arrange(p1, p2, heights = c(2, 1)) 

Теперь это выглядит следующим образом:

enter image description here

+0

@MrFlick Я упрощенно мою проблему, добавил больше деталей. –

+0

Ну, ggplot не позволяет создавать легенды для вещей, которые на самом деле не находятся в сюжете. Проще всего было бы добавить «fill = a» для второго сюжета. – MrFlick

+1

... или вы можете перенести первую легенду в верхнюю или нижнюю часть первого графика. – joran

ответ

2

Вы можете попробовать что-то подобное для p2, которое создаст новую легенду для нижнего графика.

p2 <- ggplot(tmp) + geom_bar(aes(x = reorder(group, id), a + b, group = 1, fill = 0), stat = 'identity') + 
    guides(fill=guide_legend(title="Title")) 
0

Это то, что мне нужно

guides(fill=guide_legend(title="Title")) 

Благодарности

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