首页 文章

将定义半径的透明圆添加到R中的现有图

提问于
浏览
0

enter image description here

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

循环二进制分割算法分割对数比的变化,由水平蓝线表示 . 在附加的图像中,可以看到几个段,大多数是接近log2的0.靠近图的左端是小蓝色段,日志值接近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.names如loc . 开始,和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是的,“颜色”是“浅绿”,“灰色”和“红色”的矢量 . 这些是图(x,y)中pch = 16的颜色信息 . 我不想修改pch = 16分 . 水平的“蓝色”线段由'rect'添加,它们跨越许多pch = 16个点 . 正如你所看到的,有许多“蓝色”段,一些非常小,一些大的长度,它们的log2值不同 . 这就是我想要用填充的透明圆圈绑定的 . 并非所有“蓝色”线段,而只是“蓝色”线段0.25 <log2> 0.25的线段 . 在这个图中,较小的“蓝色”片段靠近绘图的边缘,并且由于它们很难被发现,我想用它们周围的实心圆圈突出显示它们 . 如果我还不清楚,请告诉我 . 谢谢

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) )
    

    ....如果您的输出设备支持它,应该给你透明的圆圈 .

相关问题