我想在一个情节上抖动文字,以避免过度绘图.为此,我假设我需要一个围绕文本组件的边界框.有没有办法得到这个?
例如,在基本图形中:
plot.new()
text(.5,.5,"word")
text(.6,.5,"word") #does this overlap?
Run Code Online (Sandbox Code Playgroud)
在网格中有一种方法可以删除重叠的文本,但我似乎无法找到一种方法来访问代码,如果发生了重叠,则会发现这些代码.
grid.text(c("word","other word"),c(.5,.6),c(.5,.5),check=T)
Run Code Online (Sandbox Code Playgroud)
也许这些strwidth和strheight功能可以帮到这里
stroverlap <- function(x1,y1,s1, x2,y2,s2) {
sh1 <- strheight(s1)
sw1 <- strwidth(s1)
sh2 <- strheight(s2)
sw2 <- strwidth(s2)
overlap <- FALSE
if (x1<x2)
overlap <- x1 + sw1 > x2
else
overlap <- x2 + sw2 > x1
if (y1<y2)
overlap <- overlap && (y1 +sh1>y2)
else
overlap <- overlap && (y2+sh2>y1)
return(overlap)
}
stroverlap(.5,.5,"word", .6,.5, "word")
Run Code Online (Sandbox Code Playgroud)