Показать тренд на сгруппированном графике в ggplot

Это расширение уже обсуждавшегося вопроса (я копирую идеальный пример данных и решение Якуба из https://stackoverflow.com/a/18162330 )

Данные:

raw <- read.csv("http://pastebin.com/raw.php?i=L8cEKcxS",sep=",")
raw[,2]<-factor(raw[,2],levels=c("Verygood","Bad","Good","VeryGood"),ordered=FALSE)
raw[,3]<-factor(raw[,3],levels=c("Very Bad","Bad","Good","Very Good"),ordered=FALSE)
raw[,4]<-factor(raw[,4],levels=c("Very Bad","Bad","Good","Very Good"),ordered=FALSE)
raw=raw[,c(2,3,4)]
freq=table(col(raw), as.matrix(raw)) # get the counts of each factor level

ggplot + панель группировки mutliple

Names=c("Food","Music","People")     # create list of names
data=data.frame(cbind(freq),Names)   # combine them into a data frame
data=data[,c(5,3,1,2,4)]             # sort columns
# melt the data frame for plotting
data.m <- melt(data, id.vars='Names')
# plot everything
ggplot(data.m, aes(Names, value)) +
geom_bar(aes(fill = variable), position = "dodge", stat="identity")

Единственное дополнение, которое я изо всех сил пытаюсь сделать, - это добавить подогнанную линию (полином третьей степени), чтобы показать тенденцию для каждой категории в виде изменения переменной от «очень плохого» до «очень хорошего».

изображение с желаемой подогнанной линией

Построение тренда кажется проблемой.


person J.Julian    schedule 06.03.2018    source источник
comment
Чтобы построить тренд по категориям, вы, вероятно, захотите использовать фасет, который разделяет категории, чтобы линия тренда вычислялась отдельно для каждой группы: ggplot(data.m, aes(variable, value)) + geom_bar(aes(fill = variable), position = "dodge", stat="identity")+facet_wrap(~Names). Затем вам просто нужно определить свою линию тренда   -  person Mako212    schedule 06.03.2018
comment
Согласен с @Mako212, но уклоняться больше не нужно. Используйте, например. ggplot(data.m, aes(variable, value)) + geom_bar(aes(fill = variable), position = "dodge", stat="identity") + facet_grid(~Names) + geom_smooth(aes(group = 1)). Не будет хорошо выглядеть с несколькими категориями.   -  person Axeman    schedule 06.03.2018