找到绘制文本的边界框

时间:2011-06-04 02:34:44

标签: r

我想在一个情节上抖动文字,以避免过度绘图。为此,我假设我需要一个围绕文本组件的边界框。有没有办法得到这个?

例如,在基本图形中:

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)

3 个答案:

答案 0 :(得分:6)

也许strwidthstrheight函数可以在这里提供帮助

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")

答案 1 :(得分:2)

maptools有一个名为pointLabel的函数。

  

使用优化程序找到好处   没有的点标签的位置   重叠。

答案 2 :(得分:1)

如果您使用的是基本图形,则会出现thigmophobe {plotrix}

“找到离最近点的方向”

使用格子,哈雷尔提出:

labcurve {Hmisc}

“标签曲线,制作键,以及交互式绘制点和曲线”