Линии регрессии в ggplot - PullRequest
2 голосов
/ 12 марта 2020

У меня есть 2 x 2 с результирующим графиком, показывающим 4 линии регрессии и 4 группы разных цветов на графике. Чтобы сохранить 4 цвета на графике, я бы sh сохранил только 2 линий для одной из переменных, а не все 4, как показано. Данные здесь -

PLD.df <- structure(list(Site = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Inshore", "OffReef"
), class = "factor"), Depth = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("Deep", "Shallow"
), class = "factor"), PLD = c(37L, 38L, 47L, 51L, 51L, 53L, 34L, 
39L, 40L, 45L, 49L, 49L, 26L, 29L, 35L, 35L, 36L, 36L, 37L, 38L, 
38L, 40L, 41L, 46L, 47L, 52L, 37L, 38L, 40L, 45L, 45L), Location = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("ID", 
"IS", "OD", "OS"), class = "factor"), b = c(0.052, 0.05, 0.039, 
0.043, 0.036, 0.033, 0.055, 0.051, 0.048, 0.046, 0.041, 0.04, 
0.05, 0.05, 0.051, 0.049, 0.056, 0.052, 0.047, 0.045, 0.047, 
0.045, 0.045, 0.045, 0.039, 0.038, 0.046, 0.049, 0.046, 0.044, 
0.041)), .Names = c("Site", "Depth", "PLD", "Location", "b"), class = "data.frame", row.names = c(NA, 
-31L))

График ниже -

ANCOVA Участок:

enter image description here

и код, который я использовал для его создания, приведен здесь -

ggplot(PLD.df, aes(x=PLD, y=b, colour=Location)) + 
  geom_point(aes(shape=Location),size=3) + 
  scale_shape(solid=FALSE) + 
  scale_colour_manual(values=cb_palette) + 
  geom_smooth(aes(linetype=Location),method=lm, se=FALSE, fullrange=F) + 
  theme(panel.border=element_rect(colour="black", fill=NA,size=3),
        panel.background=element_rect(fill=FALSE),
        panel.grid.major=element_blank(),
        panel.grid.minor=element_blank()) + 
  theme(legend.position="NONE")

Будет ли самый простой способ удалить все строки вместе, а затем использовать функцию predictvals(), чтобы перерисовать нужные строки? Я хотел бы только показать линии регрессии для местоположений "Причал" и "Оффриф", сохраняя цвета для всех 4 сайтов.

Примечание: Это мой первый вопрос, поэтому извиняюсь, если у меня неправильный формат вопроса или я не включил всю необходимую информацию. Спасибо!

1 Ответ

0 голосов
/ 12 марта 2020

Если я правильно понял, вы указываете только x и y внутри вызова ggplot (aes (..)), а затем внутри geom_smooth вы группируете по сайту (вместо Location?). Это даст вам прогноз на Сайте:

cb_palette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", 
               "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

ggplot(PLD.df, aes(x=PLD, y=b)) + 
  geom_point(aes(shape=Location,colour=Location),size=3) + 
  scale_shape(solid=FALSE) + 
  scale_colour_manual(values=cb_palette) + 
  geom_smooth(aes(linetype=Site),
              method=lm, se=FALSE, fullrange=F,col="gray") + 
  theme(panel.border=element_rect(colour="black", fill=NA,size=3),
        panel.background=element_rect(fill=FALSE),
        panel.grid.major=element_blank(),
        panel.grid.minor=element_blank()) + 
  theme(legend.position="NONE")

enter image description here

...