Vẽ đường bị ngắt kết nối trong ggplot [trùng lặp]

Jan 14 2021

Tôi muốn tạo một biểu đồ với các đường bị ngắt kết nối bằng 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))

Sử dụng mã

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

Tôi nhận được đầu ra này

Tuy nhiên, tôi muốn tạo một cái gì đó giống như (thông báo các đường màu đỏ không được kết nối ở các bước)

Tôi đã thử sử dụng geom_segmentnhưng không thể tìm ra cách phù hợp

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

cho cái này

Trả lời

2 GregorThomas Jan 14 2021 at 06:02

Sử dụng groupthẩm mỹ để xác định các hàng được kết nối:

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

(Điều này hoạt động dễ dàng đối với dữ liệu mẫu của bạn group = zvì bạn muốn các dòng được kết nối nếu chúng có cùng zgiá trị VÀ các zgiá trị là duy nhất. Một cách mạnh mẽ hơn sẽ thêm một cột cho mục đích này.)