2016-04-13 8 views
1

ここに示すデータには、V1とV2の間にRをプロットするだけでいいです。 individuals列のサンプルの範囲に基づいてドットの色を設定したいと思います。たとえば、ドットはHG097 - HG101の範囲の1つの色、HG1941 - HG1950の範囲の2番目の色、範囲NA18542 - NA18547の3つの色のドットでなければなりません。データは次のとおりです。Rドットプロット - ベクトルからの値の範囲に基づくドットの色

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) 

base R grouped plot

注そこには伝説はまだませんし、色は標準的なものですが、これらのものは編集可能です。あなたがggplot2を好む場合


は、あなたが要因ではなく、連続変数の離散としてそれを定義

library(ggplot2) 

ggplot(d, aes(x = V1, y = V2, colour = factor(nchar(as.character(individuals))))) + 
    geom_point() 

のようにグループ化変数のインラインを定義することができます。あなたはしかし、厄介な伝説になってしまいますので、アプローチをミックスした方がよい場合があります。

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

関連する問題