2

この形式のデータフレームがあります。

             V1 V2                       V3          V4       V5         V6       V7           V8
1 0610007C21Rik  -   chr5:31351012-31356737 1.33732e-05 0.752381  0.9965090 0.000000 1.777419e-05
2 0610007L01Rik  - chr5:130695613-130717165 1.67168e+00 1.673120  0.0000000 3.453930 4.997847e-01
3 0610007P08Rik  -  chr13:63916627-64000808 7.06033e-01 0.000000  0.0815767 0.318051 1.000000e+00
4 0610007P14Rik  -  chr12:87157066-87165495 0.00000e+00 0.000000  0.0000000 5.494230          NaN
5 0610007P22Rik  -  chr17:25377114-25379603 4.99696e+00 0.908254  0.9076130 3.639250 8.461946e-01
6 0610009B22Rik  -  chr11:51499151-51502136 6.53363e-01 8.500980 13.5797000 0.000000 7.137192e-02

次のコマンドを使用して、log2(V4)とlog2(V5)をプロットしています。

plot(log2(df[,4]) ~ log2(df[,5]), xlim=c(0,10), ylim=c(0,10))

V1のパターンマッチに基づいてポイントに色を付けたい。たとえば、0610007C21Rikと0610007L01Rikを緑、0610007P22Rikと0610007P14Rikを赤にするにはどうすればよいですか?色を指定してデータフレームに別の列を追加しようとしましたが、もっと簡単な方法が必要です。

4

2 に答える 2

1

ggplot2パッケージをご覧ください。

データフレームを作成すると、人々がコードを手伝うのが簡単になります。

これは、あなたのデータに少し似たデータを作成した1つの例ですが、ログ変換を行うためのより良い方法があります。

df <- data.frame(sample(LETTERS[1:5],20, replace=TRUE), abs(rnorm(20)/100), abs(runif(20)*10))
colnames(df) <- c('V1','V4','V5')


library(ggplot2)

p <- ggplot(df, aes(log2(V4) , log2(V5)))
p + geom_point(aes(colour = V1))
于 2012-06-23T20:41:40.070 に答える
1

これがベースRソリューションです。

の一意の値ごとに1回、色のリストを名前付きベクトルとして定義しますdf$V1""色付けするポイントの名前のそれぞれの周りの'に注意してください。

col.list <- c(
              "0610007C21Rik"="green",
              "0610007L01Rik"="green",
              "0610007P22Rik"="red",
              "0610007P14Rik"="red"
             )

次に、を使用してプロットし、定義したばかりのベクトルdf$V1の値を検索します。col.list

plot(
     log2(df[,4]) ~ log2(df[,5]), 
     xlim=c(0,10),
     ylim=c(0,10),
     col=col.list[paste(df$V1)]
    )

以下のOPのコメントに対処するには、plot呼び出しでこれを使用します。

... col=ifelse(df$V1 %in% names(col.list),col.list[paste(df$V1)],"black")

これにより、完全な呼び出しは次のようになります。

plot( 
      log2(df[,4]) ~ log2(df[,5]),
      xlim=c(0,10),
      ylim=c(0,10),
      col=ifelse(df$V1 %in% names(col.list),col.list[paste(df$V1)],"black")
    )
于 2012-06-23T21:23:24.863 に答える