Как разместить кривую над гистограммой с несколькими факторами?
Я думаю, что я делаю это намного сложнее, чем оно есть, но я не смог понять это.
По сути, я создал гистограмму из некоторых данных подсчета (векторное число) по дням (векторное число). В рамках сюжета я учитываю цвет по угощению (вектор угощение). То, что я хотел бы сделать, это наложить какую-то кривую вместо наличия баров. Мне больше всего интересно показать, где пики находятся в векторном "счетчике" для каждого угощения.
Вот векторы в моем фрейме данных, который я назвал "данные"
treat<-c(1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4)
counts<-c(9,12,11,5,3,2,0,2,0,0,1,1,0,10,4,7,6,1,4,1,1,0,0,0,0,0,12,5,15,3,4,2,0,0,1,0,0,0,0,4,6,11,7,7,4,1,1,0,0,0,0,0)
day<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13)
q=ggplot(data, aes(x=factor(day), y=counts, fill=factor(treat), color=factor(treat)))
q+geom_bar(stat= "identity", position=position_dodge(), width=.75)
Спасибо, что посмотрели!
2 ответа
Если вы хотите показать пики для count
в каждом treat
, то вы можете рассмотреть использование фасетов с facet_wrap
или же facet_grid
, Пример с facet_wrap
:
ggplot(data, aes(x=factor(day), y=counts, color=factor(treat), group=factor(treat))) +
geom_line() +
facet_wrap(~treat)
который дает вам следующий сюжет:
Это то, что вы ищете?
data = data.frame(treat, counts, day)
ggplot(data, aes(x=factor(day), y=counts, group=factor(treat), color=factor(treat))) +
geom_line(lwd=1) +
geom_point()
Результат немного сложен для чтения этих данных, но, возможно, он будет выглядеть лучше с вашими реальными данными. Или вы можете использовать огранку, как показано @Jaap.
Также вы можете упростить создание данных следующим образом:
treat = rep(1:4, each=13)
day = rep(1:13, 4)