R Doplot()坐标定位器()

R Doplot()坐标定位器(),r,plot,R,Plot,我绘制了一个包含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)) d

我绘制了一个包含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)))
所以我想要两个圆圈点的精确位置,正如您所看到的,
定位器()
给出了十进制值。 我可以使用
天花板()
圆形()
,但我可能会得到一个近似错误

我需要我点击的点的整数值,基本上是离这个地方最近的点

最好使用
identify()
,它可以处理“正常”打印,并返回一个打印值与“单击”最接近的向量,但它不能处理dotPlot()输出(问题似乎是它不能处理作为定位器()的图像输出)


任何可能的解决方案都是受欢迎的,包括在shell或python中使用dotter。谢谢

正如您所提到的,
标识
不起作用,因为它需要的是绘图而不是图像。也许解决方案是在
绘图(type=“n”,…)
之后调用
图像
,但这需要更改
点绘图
函数源代码。另一个优雅的解决方案是使用
lattice
包和
面板。识别
网格等价物
identify

这里是一个示例,我选择了一些点(6->15):


看看github上的
evolvedmicrobe/dotplot


它提供了
mkDotPlotDataFrame
。有了它,您可以更好地获得匹配之间的坐标,就像使用
identify

非常感谢,我需要使用DotPlot()或类似的东西,因为我需要找到重复或反转的域,这些域不会出现在主对角线中,而是出现在绘图的其他位置。我的意思是类似于这张图片的东西,所以我应该联系dotPlot()函数的编写者并要求按照建议实现它吗?:-)@米尔库兹:老实说,你的照片让我迷路了。我把它添加到你原来的问题中,也许你可以添加一些解释来澄清你想做什么。另外,最好提供一些数据来重现情节。谢谢,我不能上传图片,因为我是新来的。现在清楚了吗?你应该
set.seed
让你的例子完全重现。对不起,我不知道set.seed函数,我现在就试试!我需要的只是知道我是否能得到2个随机点的坐标(黑色圆圈),我点击绘图时没有任何十进制值和近似值。。。
  locator(n=2, type="p")
$x
[1] 27.18720 31.23263

$y
[1] 20.45222 24.65726
library(lattice)
dotplot(y~x,data.frame(x=letters,y=letters))
trellis.focus("panel", 1, 1)
> panel.identify()
 [1]  6  7  8  9 10 11 12 13 14 15