我想抖動劇情上的文本以避免出現重疊圖。爲此,我假設我需要圍繞文本組件的邊界框。有沒有辦法得到這個?找到繪製文本的邊界框
例如,在基礎圖形:
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