一个我无法在网上找到答案的快速问题(或Wickham的书):
ggplot2中size参数的单位是多少?例如,geom_text(size = 10) - 10个单位是多少?
编辑:同样的问题适用于ggsave中的默认单位(高度= 10,宽度= 10)
ags*_*udy 42
答案是:单位是积分.它是grid包中fontsize的单位.在?unit,我们找到以下定义
"points" Points. There are 72.27 points per inch.
Run Code Online (Sandbox Code Playgroud)
(但请注意密切相关的"bigpts" Big Points. 72 bp = 1 in.)
内部ggplot2将字体大小乘以幻数ggplot2:::.pt,定义为1/0.352777778.
这是一个演示,我使用grid和ggplot2创建一个大小相同的字母:
library(grid)
library(ggplot2)
ggplot(data=data.frame(x=1,y=1,label=c('A'))) +
geom_text(aes(x,y,label=label),size=100)
## I divide by the magic number to get the same size.
grid.text('A',gp=gpar(fontsize=100/0.352777778,col='red'))
Run Code Online (Sandbox Code Playgroud)

附录感谢@baptiste
"幻数"(在aaa-constants.r中定义为.pt < - 1/0.352777778)实际上只是"点"和"mm"之间的转换因子,即1/72 * 25.4 = 0.352777778.不幸的是,grid在"pts"和"bigpts"之间进行了微妙的区分,这解释了为什么convertUnit(unit(1, "pt"), "mm", valueOnly=TRUE)给出了稍微不同的值0.3514598.
'ggplot2'包就像它之前的'lattice'一样,是在grid包上构建的.您可以在以下位置获得可用的单位:
?grid::unit
?grid::convertX
?grid::convertY
grid::convertX(grid::unit(72.27, "points"), "inches")
Run Code Online (Sandbox Code Playgroud)
(我使用形式主义pkg::func是因为在大多数情况下grid加载了一个NAMESPACE但是lattice在加载任何一个或`ggplot2 时都没有附加.)
我之前发表了一条评论,我后来删除了这句评论size.我看到文本大小size=10约为10毫米后就这样做了.agstudy提到的"神奇"数字实际上在1%以内:
as.numeric(grid::convertX(grid::unit(1, "points"), "mm"))
#[1] 0.3514598
0.352777778/.Last.value
#[1] 1.00375
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11670 次 |
| 最近记录: |