我必须在R中简单地点图,在此处显示的数据中使用V1 vs V2。我想根据individuals
列中的一系列样本设置点的颜色。例如,此处的点应为三种颜色:范围为HG097 - HG101
的一种颜色,范围HG1941 - HG1950
的第二种颜色和范围NA18542 - NA18547
的第三种颜色。数据是:
individuals V1 V2
HG097 -0.0181 -0.0818
HG099 -0.0188 -0.0808
HG100 -0.021 -0.0753
HG101 -0.0196 -0.0804
HG1941 -0.0206 0.0174
HG1942 -0.031 0.0075
HG1944 -0.0291 0.0454
HG1945 -0.0245 -0.0128
HG1947 -0.0184 -0.0065
HG1950 0.006 0.0167
NA18542 -0.0296 0.0899
NA18543 -0.0318 0.1012
NA18544 -0.0305 0.096
NA18545 -0.0317 0.1068
NA18546 -0.0315 0.1016
NA18547 -0.0332 0.098
split
功能是否可以与plot
一起使用,如下:
d <- read.table("data_file", header =T)
split(d, c(HG097:HG101) <- group1
split(d, c(HG1941:HG1950) <- group2
split(d, c(HG18542:HG18547) <- group3
groups <- c("group1", "group2", "group3")
col <- c("blue", "red", "green")
col.3 <- rep(col, each=groups)
plot(d$V1, d$V2, pch=19, col=col.3)
感谢您的解决方案。
答案 0 :(得分:1)
split
分割了一个你没有的分组因子(事实上,它就是你需要的),因此在这里没用。
使用基础绘图,您可以创建一个可以传递给col
的分组变量。在这种情况下,nchar
可以方便地执行此操作,但您可能需要使用rep
或正则表达式来定义您的组。
d$group <- nchar(as.character(d$individuals))
plot(d$V1, d$V2, col = d$group, pch = 19)
请注意,目前还没有传奇,颜色只是标准颜色,但这些都是可编辑的。
如果您更喜欢ggplot2
,则可以将内容分组变量定义为
library(ggplot2)
ggplot(d, aes(x = V1, y = V2, colour = factor(nchar(as.character(individuals))))) +
geom_point()
其中factor将其定义为离散变量而不是连续变量。不过,你最终会得到一个讨厌的传说,所以混合方法可能会更好:
d$group <- factor(nchar(as.character(d$individuals)),
labels = c('HG097 - HG101', 'HG1941 - HG1950', 'NA18542 - NA18547'))
ggplot(d, aes(x = V1, y = V2, colour = group)) + geom_point()