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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。