因此,我創建的繪圖函數用點繪製各個端口的座標。我想創建一個功能,允許用戶選擇他們想要標記哪個端口,然後更改標籤位置。獲取一個參數以獲取多個值 - R
這裏有各種端口和它們的座標:
Labels Lon Lat
1 Halifax, NS -63.59341 44.68068
2 St. John's, NL -52.73304 47.59341
3 Saint John, NB -66.05236 45.27925
4 Portland, ME -70.24435 43.68068
5 Woods Hole, MA -70.68068 41.62832
6 Nuuk, Greenland -51.75049 64.17453
7 Boston, MA -71.08727 42.36652
我的功能:
port.label <- function (pos1, cex1 = 0.6, offset1 = 0.2, col1 = "deeppink") {
port.file<-read.csv("V:/Science/Finalised Map Files/Ports.csv")
Lon <- port.file$Lon
Lat <- port.file$Lat
Lab <- paste(port.file$Lab)
a <- locator()
ay <- unlist(a[2])
aylab <- sapply (ay, function (x) which.min (abs (x - Lat)))
b <- for (i in (1:length (aylab))) {
text (x = Lon [aylab[i]], y = Lat [aylab[i]], labels = Lab [aylab[i]],
pos = pos1, cex = cex1, offset = offset1, col = col1)
}
}
現在,當我嘗試運行它:點擊四點後port.label(pos1=c(1,2,3,4))
返回標籤只使用第一個值(1),因此低於該點。所以它只取第一個價值。我試着預先設置pos1的長度與點擊的端口數有關,但這也沒有幫助。
任何想法爲什麼它只會取第一個pos1值而不是整個向量? 謝謝。
你有看看識別功能的幫助嗎?也許它可以幫助你 – droopy
我想過識別,但不是它只是繪製標籤相對於你點擊的位置而不是你能夠設置標籤的位置 – Tom