0

在此处输入图像描述

我有一个带有 X 和 Y 坐标值的 data.frame。X 轴是位置信息,Y 轴是对数比率值。这些点是基于对数比率值着色的(绿色 > 0.25、-0.25 < 灰色 < 0.25 和红色 < -0.25)。橙色水平虚线是 0.58、0 和 -1 的 log2 值。

圆形二元分割算法分割对数比率的变化,由水平蓝线表示。在附图中可以看到几个片段,大多数接近 log2 为 0。靠近图左端的是小的蓝色片段,log 值接近 0.58,还有一个小得多(几乎看不见,因为周围的红点) 对数值接近 -1 的蓝色段(图的右边缘)。我在另一个 data.frame 中有这些蓝色段的 x 和 y 坐标。我想实现以下

1) 在 -0.70 < log2 > 0.50 上方添加包围这些蓝色段的圆圈。这有助于识别可能遗漏的小段 2) 使用 alpha 值向这些圆圈添加透明颜色,以便看到蓝色段 3) 圆圈的大小将基于这些蓝色段的宽度。

我也对在 -0.70 < log2 > 0.5 处高亮这些蓝色段的其他想法持开放态度。也许我应该禁止绘制找到这些蓝色段的点(绿色和红色)。我正在使用 R 来制作这个情节。感谢帮助。

这是使用的代码:有两个 df 对象。df(X) 包含 Chr.no、Chr.Start、Chr.End 和 Log2。df(Y) 类似,但 col.name 不同,例如 loc。开始,然后定位。结尾。而不是 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是的,“颜色”是“浅绿色”、“灰色”和“红色”的向量。这些是 plot(x,y) 中 pch=16 的颜色信息。我不想修改 pch=16 点。水平“蓝色”线段由“矩形”添加,它们跨越许多 pch=16 点。正如您所看到的,有许多“蓝色”段,一些非常小,一些长度很大,它们的 log2 值不同。这就是我想用一个填充的透明圆圈来绑定的。不是所有的“蓝色”段,而是只有“蓝色”段 0.25< log2 > 0.25 的段。在这个图中,较小的“蓝色”部分靠近情节的边缘,由于它们很难被发现,我想用它们周围的实心圆圈来突出它们。如果我仍然不清楚,请告诉我。谢谢

4

1 回答 1

0

(删除了基于对蓝点(实际上是段)构建方式的猜测的错误方法。)

编辑:使用新信息,我建议绘制普通的“点”,即在由 (xleft+xright)/2 形成的 x 向量和使用 ytop 的 y 向量(应该与 ybottom 相同)每个对于符合您的条件的选定 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 回答