J'essaie de tracer la distribution des espèces entre 2 types d'habitats différents (hab 1 et hab 2). Certaines de mes espèces utilisent secondairement certains habitats, j'ai donc une colonne séparée pour hab1 secondaire (hab1.sec). Pour visualiser leur distribution à travers les deux habitats et différentes profondeurs, j'utilise un facet_grid entre hab1 et hab2. Exemple de code comme ci-dessous:Ajout de segments de ligne à la grille de facettes existante ggplot r
# example code
set.seed(101)
ID <- seq(1,20, by=1) ## ID for plotting
species <- sample(letters, size=20) ## arbitrary species
## different habitat types in hab.1
hab1 <- c("coastal","shelf","slope","open.ocean","seamount")
hab1.pri <- sample(hab1, size = 20, replace = T)
## secondarily used habitats, may not be present for some species
hab.sec <- c("coastal","shelf","slope","open.ocean","seamount", NA)
hab1.sec <- sample(hab.sec, size = 20, replace = T)
## habitat types for hab.2
hab2 <- c("epipelagic","benthopelagic","epibenthic","benthic")
hab.2 <- sample(hab2, size = 20, replace = T)
## arbitrary depth values
dep.min <- sample(seq(0,1000), size = 20, replace = T)
dep.max <- sample(seq(40, 1500), size = 20, replace = T)
# make data frame
dat <- data.frame(ID, species, hab1.pri, hab1.sec, hab.2,dep.min, dep.max)
# ggplot with facet grid
p <- ggplot(data=dat)+ geom_segment(aes(x=as.factor(ID),xend=as.factor(ID),y=dep.min, yend=dep.max),size=2,data = dat)+ scale_y_reverse(breaks = c(0, 200, 1000,1500))+facet_grid(hab.2~hab1.pri, scales = "free" ,space = "free")+theme_bw()
Je voudrais ajouter des segments pour hab1.sec dans la grille de facette existante. J'ai essayé ce code:
p+ geom_segment(aes(x=as.factor(ID),xend=as.factor(ID),y=dep.min, yend=dep.max),linetype=2,data = dat)+facet_wrap(~hab1.sec)
Mais cela produit un nouveau graphique.
Y at-il une meilleure façon d'ajouter ces lignes supplémentaires au réseau existant (de préférence sous forme de lignes en pointillés)? Je serais vraiment reconnaissant pour toute aide avec ceci! Merci beaucoup, d'avance!
L'approche de [cette réponse] (http://stackoverflow.com/a/8354731/2461552) pourrait bien fonctionner ici. – aosmith
merci de répondre @aosmith! vouliez-vous dire 'p + facet_grid (. ~ g, marges = TRUE)' part? Malheureusement, cela n'a pas fonctionné pour moi. – diya
Non, suppression de la deuxième variable de facettage de l'ensemble de données dans le second appel 'geom_segment'. C'était assez facile, mais je ne savais pas à quoi ressemblait votre résultat final, donc je ne savais pas si ça marchait ou non. – aosmith