identify
位於 graphics
包(package)。 說明
identify
在按下(第一個)鼠標按鈕時讀取圖形指針的位置。然後,它在 x
和 y
中給出的坐標中搜索最接近指針的點。如果該點距離指針足夠近,則其索引將作為調用值的一部分返回。
用法
identify(x, ...)
## Default S3 method:
identify(x, y = NULL, labels = seq_along(x), pos = FALSE,
n = length(x), plot = TRUE, atpen = FALSE, offset = 0.5,
tolerance = 0.25, order = FALSE, ...)
參數
x, y |
散點圖中點的坐標。或者,任何定義坐標的對象(繪圖結構、時間序列等:請參閱 |
labels |
一個可選的字符向量,為點提供標簽。將使用 |
pos |
如果 |
n |
要識別的最大點數。 |
plot |
邏輯:如果 |
atpen |
邏輯:如果 |
offset |
將標簽與已識別點分開的距離(以字符寬度為單位)。允許負值。如果 |
tolerance |
指針距離某個點“足夠近”的最大距離(以英寸為單位)。 |
order |
如果 |
... |
進一步傳遞給 |
細節
identify
是一個通用函數,這裏隻說明默認方法。
identify
僅在 X11
、 windows
和 quartz
等屏幕設備上受支持。在其他設備上,該調用不會執行任何操作。
單擊附近(定義為tolerance
) 一個點將其添加到已識別點的列表中。點隻能識別一次,如果該點已經被識別或者單擊不在任何點附近,則會立即在屏幕上打印一條消息R安慰。
如果 plot
是 TRUE
,則該點將使用 labels
的相應元素進行標記。如果 atpen
為 false(默認值),則標簽將放置在已識別點的下方、左側、上方或右側,具體取決於指針相對於該點的位置。如果 atpen
為 true,則標簽將放置在字符串框左下角的指針處。
對於常見的 X11
設備,通過按除第一個以外的任何鼠標按鈕來終止識別過程。對於quartz
設備,通過按彈出菜單等效項(通常是第二個鼠標按鈕或Ctrl
單擊)或ESC
鍵來終止該過程。
在大多數支持 identify
的設備上,除非已設置 options(locatorBell = FALSE)
,否則會通過鈴聲指示成功選擇點。
如果在識別過程終止之前調整窗口大小或隱藏窗口然後將其暴露,則 identify
繪製的任何標簽都將消失。一旦識別過程終止並且窗口大小調整或隱藏並再次暴露,這些將重新出現。這是因為 identify
繪製的標簽在識別過程終止之前不會記錄在設備的顯示列表中。
如果中斷 identify
調用,則會使圖形設備處於未定義狀態,其中標記了點,但標簽未記錄在顯示列表中。在該狀態下複製設備將產生不可預測的結果。
值
如果 pos
和 order
都是 FALSE
,則為包含已識別點索引的整數向量。
如果 pos
或 order
是 TRUE
,則包含組件 ind
的列表,指示識別了哪些點,以及(如果 pos
是 TRUE
)組件 pos
,指示標簽的位置相對於識別點放置(1=下方,2=左,3=上方,4=右,0=無偏移,如果 atpen = TRUE
使用)和(如果 order
是 TRUE
)組件 order
,表示識別點的順序。
技術細節
如果在那裏指定了 pos
,則用於放置標簽的算法與 text
使用的算法相同,區別在於指針相對於識別點的位置決定了 identify
中的 pos
。
對於放置在點左側的標簽,字符串框的右側邊放置在該點左側的 offset
單位,對於右側的點也類似。文本的基線位於該點下方,以便使字符串垂直居中。對於放置在點上方或下方的標簽,字符串以該點水平居中。對於放置在上方的標簽,文本的基線放置在該點上方 offset
單位,而對於放置在下方的標簽,放置基線以使字符串框的頂部大約位於該點下方 offset
單位。如果您想要更精確的放置(例如居中),請使用 plot = FALSE
並通過 text
或 points
進行繪圖:請參閱示例。
例子
## A function to use identify to select points, and overplot the
## points with another symbol as they are selected
identifyPch <- function(x, y = NULL, n = length(x), plot = FALSE, pch = 19, ...)
{
xy <- xy.coords(x, y); x <- xy$x; y <- xy$y
sel <- rep(FALSE, length(x))
while(sum(sel) < n) {
ans <- identify(x[!sel], y[!sel], labels = which(!sel), n = 1, plot = plot, ...)
if(!length(ans)) break
ans <- which(!sel)[ans]
points(x[ans], y[ans], pch = pch)
sel[ans] <- TRUE
}
## return indices of selected points
which(sel)
}
if(dev.interactive()) { ## use it
x <- rnorm(50); y <- rnorm(50)
plot(x,y); identifyPch(x,y) # how fast to get all?
}
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
dev.capabilities
看看是否支持。
相關用法
- R image 顯示彩色圖像
- R legend 將圖例添加到繪圖中
- R barplot 條形圖
- R plot.histogram 繪製直方圖
- R points 向繪圖添加點
- R stem 莖葉圖
- R mtext 將文本寫入繪圖的邊距
- R arrows 將箭頭添加到繪圖中
- R contour 顯示輪廓
- R pairs 散點圖矩陣
- R stars 星圖(蜘蛛圖/雷達圖)和線段圖
- R box 在地塊周圍畫一個方框
- R coplot 調節圖
- R smoothScatter 具有平滑密度顏色表示的散點圖
- R mosaicplot 馬賽克圖
- R bxp 從摘要中繪製箱線圖
- R plot.raster 繪製光柵圖像
- R axTicks 計算軸刻度線位置
- R curve 繪製函數圖
- R plot.factor 繪製因子變量
- R sunflowerplot 製作向日葵散點圖
- R plot.table 表對象的繪圖方法
- R units 圖形單位
- R layout 指定複雜的繪圖安排
- R polygon 多邊形繪製
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Identify Points in a Scatter Plot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。