gpt4 book ai didi

r - 使用 ggplot2 使用预定义的文本宽度将文本放入绘图区域内的好方法是什么?

转载 作者:行者123 更新时间:2023-12-04 11:46:04 25 4
gpt4 key购买 nike

这是一个问题的例子:

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

输出看起来像这样:

enter image description here

我试过使用字符串中的字符数来调整标签的大小,但它没有考虑非等宽字体中不同字符的间距和字距调整。例如,

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

然后输出看起来像这样:

enter image description here

虽然下方框中的文字宽度相同,但l和t较多的字符串的文字宽度较小。有没有办法提前计算间距,以便将所有不同字符的宽度考虑在内?

最佳答案

根据@Tyler Rinker 的建议,我使用了 strwidth 函数而不是 nchar

example$text_size2=24/strwidth(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_size2))+
scale_size_continuous(range=c(4,8))

最终结果是这样的:

enter image description here

关于r - 使用 ggplot2 使用预定义的文本宽度将文本放入绘图区域内的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com