我绘制了 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()
or round()
但我可能会得到一个近似错误
我需要我点击的点的整数值,基本上是距离该地点最近的点
可以完美使用identify()
,它适用于“正常”图,并返回一个与您的“点击”最接近的绘制值的向量,但它不适用于 dotPlot() 输出(问题似乎是它不适用于图像输出为 locator() )
任何可能的解决方案都将受到欢迎,包括在 shell 或 python 中使用 dotter。谢谢