линия тренда для всей группы - R - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь создать линию тренда для общего количества групп, но она рисует линию тренда для каждой группы. Тот же код, который я использую, я поместил здесь (с набором данных iris):

iris %>%
  mutate(id = as.numeric(rownames(iris))) %>%
  select(id, Sepal.Length, Sepal.Width, Petal.Length) %>%
  reshape(., direction = "long", varying = names(.)[2:4], v.names = "valor", idvar = c("id"), timevar = "tipo", times= colnames(.[2:4])) %>%
  ggplot(aes(x=id, y=valor, fill=tipo)) +
  geom_area() +
  geom_smooth(method = "lm")

Изображение вывода моего кадра данных (без строки geom_smooth())

enter image description here

Я попытался добавить линию тренда с помощью:

  geom_smooth(method = "lm")

Но он добавляет линию тренда для каждой группы, когда мне просто нужна одна для всего.

1 Ответ

3 голосов
/ 17 октября 2019

Установите отображение aes для каждого отдельного geom:

iris %>%
  mutate(id = rownames(iris)) %>%
  select(id, Sepal.Length, Sepal.Width, Petal.Length) %>%
  reshape(., direction = "long", varying = names(.)[2:4], v.names = "valor", idvar = c("id"), timevar = "tipo", times= colnames(.[2:4])) %>%
  mutate(id = as.numeric(id)) %>%
  ggplot() +
  geom_area(aes(x=id, y=valor, fill=tipo)) +
  geom_smooth(aes(x=id, y=valor), method = "lm")

(мне нужно было добавить дополнительный mutate, чтобы изменить id на numeric, чтобы ваш код работал)

...