Помечать отдельные участки в facet_grid

#r #ggplot2 #plot #facet-grid #geom-text

#r #ggplot2 #график #facet-сетка #геометрический текст

Вопрос:

Я пытаюсь закончить этот график, и все, что мне нужно, это добавить R-квадрат к каждому графику по отдельности.

Однако метки накладываются на каждый график.

Я использовал p geom_text и p geom_label без положительных результатов.

 
Trajectories$date<-as.POSIXct(Trajectories$date,"%Y-%m-%d",tz = "UTC")

# Reorder names in a new variable
Trajectories$variable_f = factor(Trajectories$variable, 
      levels=c("canopy_cover", "Leaf_litter", "Chla", "Shrimps", "macroinvertebrates"))

levels(Trajectories$variable_f) <- 
  c("textstyle('Canopy openness')", 
    "textstyle('Leaf litter')",
    "textstyle('Chlorophyll-')*italic('a')",
    "textstyle('Shrimps')",
    "atop(NA,atop(textstyle('Macroinvertebrate'),textstyle('density')))")

# Changes names in Facet_grid ---- es una manera buena, pero no la voy a usar --- Habria que labeller(variable_f = variable_f
#variable_f <- c("Canopy openness", "Leaf litter", "Chlorophyll-a","Shrimps","Macroinvertebrates")
#names(variable_f) <- c("canopy_cover", "Leaf_litter", "Chla", "Shrimps", "macroinvertebrates")

streams <- c("Prieta A", "Prieta B")
names(streams) <- c("QPA", "QPB")

# General graph -----------------------------------------------------------

 p<- ggplot(Trajectories, aes(date,value))   
  geom_point(shape = 21, fill = "#bdd7e7", color = "#2171b5", size = 3)  
  geom_smooth(se = T, size=1.7, color= "gray20", method = "gam", formula = y ~s(x))   
  geom_hline(yintercept = 0, color="gray20")  
  
  xlab('Year')   ylab("Change in magnitude")   
  theme(axis.title.x = element_text(size = 14, angle = 0))   # axis x
  theme(axis.title.y = element_text(size = 14, angle = 90))   # axis 7
  theme(axis.text.x=element_text(angle=0, size=10, vjust=0.5, color="black"))   #subaxis x
  theme(axis.text.y=element_text(angle=0, size=10, vjust=0.5, color="black"))   #subaxis y
  
  ylim(-3,3)   

  theme(legend.position="none") 
  
  theme(panel.grid.major = element_line(colour = "gray95"), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))  
  theme(panel.border = element_rect(colour = "black", fill=NA, size=0.5))  
  
  facet_grid(vars(stream), vars(variable_f),
    labeller = labeller(variable_f = label_parsed, stream = streams))  
    theme(
      strip.text.x = element_text(size = 10, color = "black"),
      strip.text.y = element_text(size = 10, color = "black"),
      strip.placement = "outside")  
   theme(strip.background=element_rect(color= "black", fill="gray85"))  
   theme(strip.text.x = element_text(margin = margin(0.001,0,0.001,0, "cm")))  
    
 geom_vline(aes(xintercept=as.POSIXct("2017-09-21")), # Hurricane Maria
            col= "red",linetype=4, alpha=0.9)  
  geom_vline(aes(xintercept=as.POSIXct("2017-09-6")), # Hurricane Irma
             col= "blue",linetype=4, alpha=0.9) 
p
 

введите описание изображения здесь

Я попытался создать фрейм данных с метками. Но это не работает, и это перекрывает метки.

 labels <- data.frame(variable =c("canopy_cover","Leaf_litter","Chla","Shrimps","macroinvertebrates",
                                 "canopy_cover","Leaf_litter","Chla","Shrimps","macroinvertebrates"),
                     label=c("R1","R2","R3","R4","R5","R6","R7","R8","R9","R10"),
                     stream= c("QPA","QPA","QPA","QPA","QPA",
                               "QPB","QPB","QPB","QPB","QPB"))
labels
p     geom_text(
  size    = 5,
  data    = labels,
  mapping = aes(x = as.POSIXct("2017-09-6"), y = Inf, label = label),
  hjust   = 1.05,
  vjust   = 1.5
)
 

Заранее спасибо

Комментарии:

1. Вы не предоставляете данные, поэтому я не могу экспериментировать на себе. Тем не менее, для этого графика (это не общее решение) изменение значения даты, например, на «2019-09-06» в вызове to geom_text() может помочь. Пожалуйста, дайте мне знать, сработало ли это 😉

2. Это может быть полезно: github.com/eliocamp/tagger

3. @KoenV Спасибо за совет. Но не используйте это. Я создал новый df и смог добавить каждый R к соответствующим участкам. Однако теперь порядок графиков изменился. Теперь последний участок является первым. Я думаю, что проблема заключается в том, чтобы определить название участков (их положение в каждом столбце и строке), чтобы указать R каждого из них.

4. @teunbrand Спасибо, но мне нужны не теги, а добавление определенного R к каждому участку. Еще раз спасибо.