1

当我使用文本功能时,我试图找到一种方法来减少绘图中字母之间的空间......

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

我希望每个字母之间几乎没有空格,或者重叠的选项(如下图的底部......我在 MS 油漆中手工完成了这个)。

文本

4

2 回答 2

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等)。

于 2013-08-20T22:56:12.193 回答
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)
于 2013-08-20T22:36:54.443 回答