Как разместить кривую над гистограммой с несколькими факторами?

Я думаю, что я делаю это намного сложнее, чем оно есть, но я не смог понять это.

По сути, я создал гистограмму из некоторых данных подсчета (векторное число) по дням (векторное число). В рамках сюжета я учитываю цвет по угощению (вектор угощение). То, что я хотел бы сделать, это наложить какую-то кривую вместо наличия баров. Мне больше всего интересно показать, где пики находятся в векторном "счетчике" для каждого угощения.

Вот векторы в моем фрейме данных, который я назвал "данные"

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)
Другие вопросы по тегам