0

ここに画像の説明を入力

X と Y の座標値を持つ data.frame があります。X 軸は位置情報、Y 軸は対数比の値です。ポイントは対数比の値に基づいて色分けされています (緑 > 0.25、-0.25 < グレー < 0.25、および赤 < -0.25)。オレンジ色の破線の水平線は、0.58、0、および -1 の log2 値です。

循環バイナリ セグメンテーション アルゴリズムは、対数比の変化をセグメント化し、青い水平線で示します。添付の画像では、0 の log2 に近い場合、いくつかのセグメントを見ることができます。図の左端近くには、0.58 に近い対数値を持つ小さな青いセグメントと、はるかに小さい (周囲の赤い点のためにほとんど見えない) があります。 ) -1 に近い対数値の青いセグメント (プロットの右端)。これらの青いセグメントの x 座標と y 座標を別の data.frame に持っています。以下を実現したい

1) -0.70 < log2 > 0.50 を超えるこれらの青いセグメントを囲む円を追加します。これは、見落とされる可能性のある小さなセグメントを識別するのに役立ちます。2) アルファ値を使用してこれらの円に透明色を追加し、青いセグメントが見えるようにします。3) 円のサイズは、これらの青いセグメントの幅に基づきます。

これらの青いセグメントを -0.70 < log2 > 0.5 で強調表示する他のアイデアも受け入れます。これらの青いセグメントが見つかったポイント (緑と赤) のプロットを抑制する必要があるかもしれません。このプロットを作成するために R を使用しています。助けに感謝します。

これは使用されたコードです: 2 つの df オブジェクトがあります。df(X) には、Chr.no、Chr.Start、Chr.End、および Log2 が含まれます。df(Y) は似ていますが、loc などの col.names が異なります。開始し、ロックします。終わり。Log2 の代わりに、seg.mean 値があります。

for (i in 1:25)  {       # Plot each chromosome separately

  plot(X[which(X$Chr.No ==i),"Chr.Start"], X[which(X$Chr.No ==i),"Log2"], ylim=c(-4.0,4.0), col=X[which(X$Chr.No ==i),"Color"], pch=16, cex=0.4, ylab="Log2", xlab="Genomic Position", main= paste("KCL:180522_SS", "chromosome", i, sep=" "))
  abline(h=c(-1,0,log2(3/2)), lty=2, col="chocolate")
  xleft  = Y[which(Y$Chr.No ==i),"loc.start"]            # Left limit of the blue horizontal line
  xright = Y[which(Y$Chr.No ==i),"loc.end"]              # Right limit of the blue horizontal line
  ybottom= Y[which(Y$Chr.No ==i),"seg.mean"] - 0.010     # Adding thickness to the "seg.mean"
  ytop   = Y[which(Y$Chr.No ==i),"seg.mean"] + 0.010     # Adding thickness to the "seg.mean"
  rect(xleft=xleft, ybottom=ybottom, xright=xright, ytop=ytop, col="blue", border="blue")
}

@Dwinはい、「色」は「薄緑」、「灰色」、「赤」のベクトルです。これらは、プロット (x,y) の pch=16 の色情報です。pch=16 ポイントを変更したくありません。水平の「青い」線分は「rect」によって追加され、多くの pch=16 ポイントにまたがります。ご覧のとおり、多くの「青い」セグメントがあり、log2 値が異なる、非常に小さいものと大きいものがあります。これは、塗りつぶされた透明な円で結び付けたいものです。すべての「青」セグメントではなく、「青」セグメントが 0.25< log2 > 0.25 のセグメントのみです。この図では、小さな「青」のセグメントがプロットの端に近く、見つけにくいため、塗りつぶされた円で強調表示したいと思います。まだはっきりしない場合はお知らせください。ありがとう

4

1 に答える 1

0

(青い点 (実際にはセグメント) が構築されている方法についての推測に基づいて、誤った方法を削除しました。)

編集:新しい情報を使用して、通常の「ポイント」を描画することをお勧めします。つまり、(xleft + xright)/2 によって形成される x ベクトルと、ytop (ybottom と同じである必要があります) を使用する y ベクトルでそれぞれ白丸を描画することをお勧めします。基準を満たす選択された ytop 値について。これらの各ベクトルを選択する論理ベクトルを作成します。そう:

selvec <- ytop < -0.70 | ytop > 0.5
points ( x= (xleft[selvec]+xright[selvec])/2, y= ytop[selvec], cex =1.5, col="blue")

rgb() 関数を使用して透明度のある色を作成する場合は、透明度を使用することもできます。

points ( x= (xleft[selvec]+xright[selvec])/2, y= ytop[selvec], cex = 2, col=rgb(0, 0, 1, 0.3) )

....出力デバイスがサポートしている場合、透明な円が表示されます。

于 2012-09-26T16:56:30.013 に答える