我想抖动剧情上的文本以避免出现重叠图。为此,我假设我需要围绕文本组件的边界框。有没有办法得到这个?找到绘制文本的边界框
例如,在基础图形:
plot.new()
text(.5,.5,"word")
text(.6,.5,"word") #does this overlap?
在格有下降重叠的文本的方式,但我似乎无法找到一种方法来访问计算出是否发生重叠码。
grid.text(c("word","other word"),c(.5,.6),c(.5,.5),check=T)
我想抖动剧情上的文本以避免出现重叠图。为此,我假设我需要围绕文本组件的边界框。有没有办法得到这个?找到绘制文本的边界框
例如,在基础图形:
plot.new()
text(.5,.5,"word")
text(.6,.5,"word") #does this overlap?
在格有下降重叠的文本的方式,但我似乎无法找到一种方法来访问计算出是否发生重叠码。
grid.text(c("word","other word"),c(.5,.6),c(.5,.5),check=T)
也许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")
如果您正在使用的基础图形这将是thigmophobe {plotrix}
“寻找方向的最近点离”
使用点阵,哈勒尔提供了:
labcurve {Hmisc}
“Label Curves,Make Keys,and Interactively Draw Points and Curves”
我没有看到这些如何可以用来弄清楚,如果两段文字重叠。 – 2011-06-04 02:50:09
他们不能,但他们通常是做这类事情的有用工具。不直接回答你的问题,但可能适用于未来浏览此处的其他人。特别是'labcurve'有一些绘制标签的机器,同时避免出现 – 2011-06-04 19:14:43
包maptools
有一个称为pointLabel
功能。
使用优化程序找到点标签良好 位置,而 重叠。
的过度绘制,可能接近完美。它没有得到正确的小写字母“p”的尾部。 – 2011-06-04 20:07:06
这假定坐标位于每个文本的左下角。这对R中的text()是否正确?还是它实际上位于文本的中间?如果后者是真的,这仍然有效吗? – useR 2016-12-13 22:54:35