我绘制了 2 个 fasta 序列的点图(使用 seqinr 包中的 dotPlot()),我需要从图中提取一些值(x,y)。Dotplot() 输出是一个图像一个通用的点图可能是这个
例如,我需要用紫色线表示的局部对齐的开始和结束值, 所以这里有一个例子
l=30
seq1 <- paste(sample(c("A","G","T","C"), l, repl=TRUE))
seq2 <- paste(sample(c("A","G","T","C"), l, repl=TRUE))
dotPlot(seq1,seq2, wsize = 2, wstep = 1, nmatch = 2, col = c("white", "green"), xlab = deparse(substitute(seq1)), ylab = deparse(substitute(seq2)))
locator(n=2, type="p")
$x
[1] 27.18720 31.23263
$y
[1] 20.45222 24.65726
所以我想要两个圆圈点的位置,你可以看到locator()
给出的十进制值。我可以使用ceiling()
,或者round()
但我可能会得到一个近似错误
我需要我点击的点的整数值,基本上是离该地点最近的点
非常适合使用identify()
,它适用于“正常”图,并返回一个与您的“点击”最接近的绘制值的向量,但它不适用于 dotPlot() 输出(问题似乎是它没有'不能将图像输出作为 locator() )
欢迎任何可能的解决方案,包括在 shell 或 python 中使用 dotter。谢谢