0

x 軸が単一のサンプルを表し、y 軸が時間の異なる部分を表すようにセグメント化されている (R または gnuplot で) プロットを描画しようとしています。各線分 (またはボックス) は、3 番目の変数 (はい、いいえ、または不明) に応じて色付けされます。

SampleID   y1    y1(answer) y2        y2(answer)  y3      y3(answer) 
Sample 1   0-50  yes        51-60     no          61-85   yes
Sample 2   0-40  yes        41-60     no          61-86   no
Sample 3   0-45  unknown    46-69     yes         70-85   unknown

はい=緑、いいえ=赤の色。および不明 = グレー

誰でも解決策を提案できますか? セグメントの 3 番目の変数に基づいて色を割り当てると、問題が発生するという同じ問題に直面し続けます。

他のフォーラム ユーザーも同じ問題に直面しているようですが、簡単な回避策はまだ見つかっていません。ほとんどの場合、複数のプロットを実行してそれらを重ねることをお勧めします。問題を再考したり、データを再フォーマットしたりする方法があるのだろうか?

4

1 に答える 1

1

何を言っているのかよくわかりませんが、これが私の最善の推測でした。(実際には、x 軸と y 軸を反転させたいと思いますが、これで良いスタートが切れるはずです。)

データ:

dd <- read.table(text="
SampleID   y1    y1(answer) y2        y2(answer)  y3      y3(answer) 
Sample_1   0-50  yes        51-60     no          61-85   yes
Sample_2   0-40  yes        41-60     no          61-86   no
Sample_3   0-45  unknown    46-69     yes         70-85   unknown",
header=TRUE)

データを長い形式に再配置します。

library(reshape2)
dd2 <- melt(dd,id.var=1)
dd2 <- transform(dd2,
                 var2=substr(as.character(variable),1,2),
                 type=ifelse(grepl("\\.",as.character(variable)),"answer","range"))
dd2 <- subset(dd2,select=-variable)
dd3 <- dcast(dd2,SampleID+var2~type)
library("stringr")
dd3 <- transform(dd3,start=as.numeric(str_extract(range,"^[0-9]+")),
                 end=as.numeric(str_extract(range,"[0-9]+$")),
                 answer=factor(answer,levels=c("yes","no","unknown")))

写真:

library("ggplot2")
ggplot(dd3)+
    geom_segment(aes(x=start,xend=end,y=SampleID,yend=SampleID,colour=answer))+
    scale_colour_manual(values=c("red","green","gray"))+
    theme_bw()

おそらく最後のビットsegments()も同様に行うことができます。

ここに画像の説明を入力

于 2013-05-04T18:10:42.313 に答える