绘制所有观测值,但根据不同的组为其着色

时间:2019-03-12 07:37:22

标签: r ggplot2 reshape2 melt

下面有一个示例数据,其中包含唯一的示例ID和3组。我需要在“ df”中绘制所有观察值(行),但要根据组ID(“ groupid”)为它们着色。 这是我到目前为止的内容:

# sample data creation
samples <- paste0("S",c(1:9))
groupid <- c("group1", "group2", "group3")
foo <- data.frame(Samples = samples, Group = rep(groupid, each = 3))

bar <- data.frame()
for(i in 1:length(samples)){
  ran.data <- rnorm(10, 0.5)
  #colnames <- paste0("w",c(1:length(ran.data)))
  for(j in 1:length(ran.data)){
    bar[i,j] <- ran.data[j]
  }
}
df <- cbind(foo, bar)

# ******************
# creating plot data
plotdf <- as.data.frame(t(df))
cols <- as.character(unlist(plotdf[1,]))
plotdf <- plotdf[-c(1,2),] # removing rows
groupid <- df$Group # var to group by
names(plotdf) <- cols
plotdfrows <- names(df[,3:ncol(df)])
plotdf$rownames <- plotdfrows

# melt and plot
library(reshape2)
library(ggplot2)
melteddf <- melt(plotdf, id.var = "rownames")

final.plot <- ggplot(melteddf, aes(rownames, value, colour = variable, group = groupid)) + geom_point() + #geom_line() +
  scale_y_discrete(breaks=seq(-3, 3, by = 0.5)) + scale_x_discrete() + 
  labs(title = paste("Sample plot"))  #breaks=seq(0, 4, by = 0.5)

print(final.plot)

当我使用group = 1时,我设法得到了该图,但是观察结果的颜色不同。但是在哪里可以指定“ groupid”信息? 预先感谢。

0 个答案:

没有答案