#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 к каждому участку. Еще раз спасибо.