R ggplot根据因子向散点图添加线段

R ggplot根据因子向散点图添加线段,r,ggplot2,scatter,segment,R,Ggplot2,Scatter,Segment,我有以下“代码” set.seed(100) values<-c(rnorm(200,10,1),rnorm(200,2.1,1),rnorm(250,6,1),rnorm(75,2.1,1),rnorm(50,9,1),rnorm(210,2.05,1)) rep1<-rep(3,200) rep2<-rep(0,200) rep3<-rep(1,250) rep4<-rep(0,75) rep5<-rep(2,50) rep6<- rep(0,210

我有以下“代码”

set.seed(100)
values<-c(rnorm(200,10,1),rnorm(200,2.1,1),rnorm(250,6,1),rnorm(75,2.1,1),rnorm(50,9,1),rnorm(210,2.05,1))
rep1<-rep(3,200)
rep2<-rep(0,200)
rep3<-rep(1,250)
rep4<-rep(0,75)
rep5<-rep(2,50)
rep6<- rep(0,210)
group<-c(rep1,rep2,rep3,rep4,rep5,rep6)
df<-data.frame(values,group)
set.seed(100)

值我们可以通过稍微增加您的数据来做到这一点。我们将使用
dplyr
获得
组的平均值,我们将创建变量,给出观察指数,并在
组每次改变时增加一个变量(这将有助于获得您想要的分段):1



我看

我们可以通过稍微增加您的数据来做到这一点。我们将使用
dplyr
获得
组的平均值,我们将创建变量,给出观察指数,并在
组每次改变时增加一个变量(这将有助于获得您想要的分段):1


我看

library(dplyr)

df <- df %>%
    mutate(idx = seq_along(values), group = as.integer(group)) %>%
    group_by(group) %>%
    mutate(m = mean(values)) %>%
    ungroup() %>%
    mutate(group2 = cumsum(group != lag(group, default = -1)))
ggplot(data = df, mapping = aes(x = idx, y = values)) +
    geom_point(shape = 1, color = "blue") +
    geom_line(aes(x = idx, y = m, group = group2, color = as.factor(group)),
              size = 2) +
    scale_color_manual(values = c("red", "black", "green", "blue"),
                       name = "group") +
    theme_bw()