/ / encontrando a caixa delimitadora do texto plotado - r

encontrando a caixa delimitadora do texto plotado - r

Eu gostaria de agitar o texto em uma trama, a fim de evitar overplotting. Para fazer isso, presumo que preciso de uma caixa delimitadora em torno do componente de texto. Existe uma maneira de conseguir isso?

Por exemplo, em gráficos base:

plot.new()
text(.5,.5,"word")
text(.6,.5,"word") #does this overlap?

Na grade, há uma maneira de descartar o texto sobreposto, mas não consigo encontrar uma maneira de acessar o código que descobre se a sobreposição ocorreu.

grid.text(c("word","other word"),c(.5,.6),c(.5,.5),check=T)

Respostas:

6 para resposta № 1

Talvez o strwidth e strheight funções podem ajudar aqui

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

2 para resposta № 2

Pacote maptools tem uma função chamada pointLabel.

Use rotinas de otimização para encontrar boas locais para rótulos pontuais sem sobreposições.


1 para resposta № 3

Se você estivesse usando gráficos de base, seria thigmophobe {plotrix}

"Encontre a direção do ponto mais próximo"

Usando lattice, Harrell ofereceu:

labcurve {Hmisc}

"Label Curves, Make Keys e Interactively Draw Points and Curves"