这是一个问题的示例:
example=data.frame(x1=c(1,4.1,7),x2=c(4,7.1,10),
y1=c(1,1,5),y2=c(2,2,6),text=c('Example','A Bigger Example','little.lite'))
example$xmid = (example$x1+example$x2)/2
example$ymid = (example$y1+example$y2)/2
ggplot()+geom_rect(data=example,aes(xmin=x1,xmax=x2,ymin=y1,ymax=y2,fill=text))+
geom_text(data=example,aes(x=xmid,y=ymid,label=text))
输出如下所示:
我尝试过使用字符串中的字符数来调整标签的大小,但它没有考虑非等宽字体中不同字符的间距和字距调整。例如,
example$text_size=24/nchar(as.character(example$text))
ggplot()+geom_rect(data=example,aes(xmin=x1,xmax=x2,ymin=y1,ymax=y2,fill=text))+
geom_text(data=example,aes(x=xmid,y=ymid,label=text,size=text_size))+
scale_size_continuous(range=c(4,8))
输出如下所示:
虽然下部框中的文本宽度相同,但包含多个 l 和 t 的字符串的文本宽度较小。有没有办法提前计算间距,以便考虑所有不同字符的宽度?