2013-10-31 57 views
1

我畫2個FASTA序列的點陣圖(使用點圖()從seqinr封裝)和我需要從情節提取一些值(x,y)的。 的點陣圖()輸出爲圖像 一個通用點陣圖也許是這一個- [R Doplot()座標定位符()

enter image description here

我需要例如局部比對的起始&結束其由紫色線表示的值 所以這裏一個例子

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

enter image description here

locator(n=2, type="p") 
$x 
[1] 27.18720 31.23263 

$y 
[1] 20.45222 24.65726 

所以我想要2個圓圈點的位置,正如你可以看到locator()給出十進制值。 我可以使用ceiling()round(),但我也許回來近似誤差

我需要我點擊了點的整數值,基本上是最近點的地方

將是完美的使用identify(),這與「正常」地塊工程和還給與最接近的繪製價值,你的「點擊」一個載體,但它不會對點陣圖()輸出工作(這個問題似乎是,它不」 t作爲定位器()的圖像輸出工作)

任何可能的解決方案都會受到歡迎,包括在shell或python中使用dotter。由於

+0

你應該只是'set.seed',讓您徹底例如重複性。 – agstudy

+0

對不起,我不知道set.seed函數,我現在要試試! 什麼,我需要它只是知道如果我能得到的2個隨機點的座標(圖中圈黑色),我在圖上點擊沒有任何十進制值和逼近... – mirkuz

回答

0

正如你所提到的Identify,因爲它需要一個情節不是圖像不起作用。也許一個解決方法是調用plot(type="n",..)image但這需要改變dotPlot功能的源代碼。另一個優雅的解決方案是使用lattice包和panel.identify網格等效於identify

這裏一個例子,在這裏我選擇一些點(6 - > 15):

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 

enter image description here

+0

非常感謝你,我需要用散點圖( )或類似的東西,因爲我需要找到重複或倒置的域,它不出現在主對角線上,而是出現在圖的其他地方。 我的意思是這樣PIC http://www.vivo.colostate.edu/molkit/dnadot/retrodot.gif 所以我應該聯繫點陣圖()函數的作家,並要求執行它的建議? :-) – mirkuz

+0

@mirkuz老實說,我迷失了你的照片。我將它添加到你的原始問題中,也許你可以添加一些解釋來澄清你想要做什麼。另外最好提供一些數據來重現情節。 – agstudy

+0

謝謝,我無法上傳圖片,因爲我是新來的。現在清楚嗎? – mirkuz