Tracer la ligne déconnectée dans ggplot [dupliquer]

Jan 14 2021

Je souhaite créer un graphique avec des lignes déconnectées à l'aide de ggplot

# Sample data
x <- seq(1:100)
y <- c(rnorm(25, mean = 1, sd = 1), rnorm(25, mean = 2, sd = 1), rnorm(25, mean = 3, sd = 1), rnorm(25, mean = 4, sd = 1))
z <- rep(1:4, each = 25)
tempdf <- data.frame(cbind(x,y,z))

Utilisation du code

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_line(aes(y = z), color = "red", size = 1)

Je reçois cette sortie

Cependant, je veux créer quelque chose comme (notez que les lignes rouges ne sont pas connectées aux étapes)

J'ai essayé d'utiliser geom_segmentmais je n'ai pas trouvé la bonne manière

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_segment(x = x, y = z, xend = x+25, yend = z)

donne ça

Réponses

2 GregorThomas Jan 14 2021 at 06:02

Utilisez une groupesthétique pour définir les lignes connectées:

ggplot(data=tempdf, aes(x = x)) +
    geom_line(aes(y = y), color = "blue") + 
    geom_line(aes(y = z, group = z), color = "red", size = 1)

(Cela fonctionne facilement pour vos exemples de données avec, group = zcar vous voulez que les lignes soient connectées si elles ont la même zvaleur ET que les zvaleurs sont uniques. Une méthode plus robuste ajouterait une colonne à cet effet.)