R点图 - 基于矢量值的点的颜色

时间:2016-04-13 17:59:55

标签: r plot ggplot2

我必须在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)

感谢您的解决方案。

1 个答案:

答案 0 :(得分:1)

split分割了一个你没有的分组因子(事实上,它就是你需要的),因此在这里没用。

使用基础绘图,您可以创建一个可以传递给col的分组变量。在这种情况下,nchar可以方便地执行此操作,但您可能需要使用rep或正则表达式来定义您的组。

d$group <- nchar(as.character(d$individuals))

plot(d$V1, d$V2, col = d$group, pch = 19)

base R grouped plot

请注意,目前还没有传奇,颜色只是标准颜色,但这些都是可编辑的。

如果您更喜欢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()

grouped ggplot