ggplot根据因素将段添加到散点图

时间:2020-05-11 13:43:42

标签: 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)
group<-c(rep1,rep2,rep3,rep4,rep5,rep6)
df<-data.frame(values,group)

我想将这些数据绘制为散点图(如所附图)并添加分段。这些段(y值)应代表给定组的数据平均值。另外,根据因素(组),分段应具有不同的颜色。有没有一种有效的方法来用ggplot呢? 非常感谢 enter image description here

1 个答案:

答案 0 :(得分:0)

我们可以通过稍微扩充您的数据来做到这一点。我们将使用dplyr来获得group的均值,并创建变量以提供观察索引,并在group每次更改时将其递增1(这将是有助于获取所需的细分): 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)))

现在我们可以绘制情节了;将geom_line()group2分组一起使用,分组每次更改都会更改group,从而生成所需的细分。然后,我们用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() (的离散版本)进行着色:

RaisedButton(
          child: Text("press please"),  // here (,) is missing
          onPressed: () {
            // here navigator
          },
        ),

enter image description here


1 参见https://stackoverflow.com/a/42705593/8386140