2013-08-20 46 views
1

我试图找到一种方法来减少在情节字母之间的空位时,我使用文本功能...减少字母之间的间距在文本功能

par(mar=rep(0,4)) 
plot.new() 
text(0.5,0.8,"text", cex=8) 

我想几乎没有每个字母之间的空格,或重叠的选项(如下图所示的底部......我在MS油漆中手动完成)。

text

回答

2

一个选项:

par(mar=rep(0,4)) 
plot.new() 

word = "text" 
letters = strsplit(word,"") 

xstart = .4 
ystart = .8 
space = .075 

for(i in 1:length(letters[[1]])){ 

    text(xstart,ystart,letters[[1]][i], cex=8) 
    xstart = xstart + space 

} 

虽然我个人而言,我会做手工一个在这样的时刻信:

par(mar=rep(0,4)) 
plot.new() 

text(.5,.8,"t", cex=8) 
text(.57,.8,"e", cex=8) 
text(.645,.8,"x", cex=8) 
text(.7,.8,"t", cex=8) 
3

这里是一个开始的功能要做到这一点:

squishtext <- function(x,y, text, squish=1) { 
     text <- strsplit(text, '')[[1]] 
     w <- strwidth(text) 
     ww <- cumsum(c(0,head(w,-1)) * squish) 
     text(x + ww, y, text, adj=c(0,0)) 
    } 

和一个简单的例子/检查:

plot(1:10, type='n') 
    text(5, 3, "test", adj=c(0,0)) 
    squishtext(5, 4, "test", squish=1) 
    squishtext(5, 5, "test", squish=0.8) 
    squishtext(5, 6, "test", squish=0.5) 
    squishtext(5, 7, "test", squish=1.2) 
    squishtext(5, 8, "test", squish=2) 

它可以扩展到采取额外的参数(adjcex等)。

+0

+1,不可能理解为什么它是downvoted – baptiste