พล็อตบรรทัดที่ตัดการเชื่อมต่อใน ggplot [ซ้ำ]

Jan 14 2021

ฉันต้องการสร้างแผนภูมิที่มีเส้นตัดการเชื่อมต่อโดยใช้ 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))

การใช้รหัส

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

ฉันได้ผลลัพธ์นี้

อย่างไรก็ตามฉันต้องการสร้างบางสิ่งเช่น (สังเกตว่าเส้นสีแดงไม่ได้เชื่อมต่อในขั้นตอน)

ฉันพยายามใช้geom_segmentแต่ไม่สามารถหาวิธีที่ถูกต้องได้

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

ให้สิ่งนี้

คำตอบ

2 GregorThomas Jan 14 2021 at 06:02

ใช้groupสุนทรียศาสตร์เพื่อกำหนดว่าจะเชื่อมต่อแถวใด:

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

(ใช้งานได้ง่ายสำหรับข้อมูลตัวอย่างของgroup = zคุณเนื่องจากคุณต้องการให้เส้นเชื่อมต่อหากมีzค่าเดียวกันและzค่าไม่ซ้ำกันวิธีที่มีประสิทธิภาพมากขึ้นจะเพิ่มคอลัมน์เพื่อจุดประสงค์นี้)