Мой вопрос близок к этому Легенды о множественных заливках в ggplot и все же не одно и то же.Позвольте мне объяснить.
У меня есть фрейм данных, который выглядит следующим образом:
df <- data.frame(
'sf'=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'),
'totalsf'=c(28, NA, NA, 32, NA, NA, 40, NA, NA),
'sl' = c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
'totalsl' = c(35, NA, NA, 40, NA, NA, 25, NA, NA),
'min' = c('aa', 'bb', 'cc', 'aa', 'bb','cc', 'aa', 'bb', 'cc'),
'totalmin' = c(30, 4, 0, 8, 0, 25, 8, 9, 16),
'id' = c(1,2,3,4,5,6,7,8,9))
Я в основном хочу построить totalsf с sf как заливку, totalsl с sl как заливку и totalmin с minкак заполнение, все с geom_bar, следующим образом:
g <- ggplot(df %>% mutate(id = id), aes(group=id))
g <- g + geom_bar(aes(x=0, y=totalsf, fill=sf), width=.05, stat="identity")
g <- g + geom_bar(aes(x= 0.05, y=totalsl, fill=sl), width=.05, stat="identity")
g <- g + geom_bar(aes(x=0.1, y=totalmin, fill=min), width=.05, stat="identity")
g <- g + theme_light()
g <- g + theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
legend.position="bottom")
g <- g + labs(x = "Variable", y = "y", fill = "x")
g <- g + scale_y_continuous(breaks=seq(0, 100, by=10))
print(g)
Это дает следующий график:
Имейте в виду,это то, что я хочу (и я также знаю, как изменить цвета, но давайте не будем перегружать код).В этом суть моей проблемы: легенда отвратительна, в идеале я хотел бы, чтобы три переменные имели собственную легенду, а не в алфавитном порядке, как сейчас.Кто-нибудь знает, как настроить легенду так, чтобы у каждой переменной была своя легенда?(в основном "sf" в качестве заголовка с цветами a, b, c, "sl" в качестве заголовка с цветами A, B, C и "min" в качестве заголовка с цветами aa, bb, cc).
Заранее спасибо за ваши ответы!
Лучший,
Натали