1

我想使用 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)

给了这个在此处输入图像描述

4

1 回答 1

2

使用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值是唯一的,您希望连接线。更强大的方法是为此目的添加一列。)

在此处输入图像描述

于 2021-01-13T23:02:01.780 回答