ggplot2 – A unidade de tamanho

Uma pergunta rápida que não consigo encontrar resposta na web (ou no livro de Wickham):

Qual é a unidade do argumento de tamanho em ggplot2? Por exemplo, geom_text (size = 10) – 10 em quais unidades?

EDIT: A mesma pergunta se aplica à unidade padrão em ggsave (height = 10, width = 10)

A resposta é: A unidade é os pontos. É a unidade de tamanho de fonte no pacote de grid . Na ?unit , encontramos a seguinte definição

 "points" Points. There are 72.27 points per inch. 

(mas observe os Big Points. 72 bp = 1 in. intimamente relacionados “bigpts” Big Points. 72 bp = 1 in. )

Internamente ggplot2 irá multiplicar o tamanho da fonte por um número mágico ggplot2:::.pt , definido como 1 / 0.352777778 .

Aqui uma demonstração, eu crio uma carta usando grid e ggplot2 com o mesmo tamanho:

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

insira a descrição da imagem aqui

Adendo Graças a @baptiste

O “número mágico” ( definido em aaa-constants.r como .pt <- 1 / 0.352777778 ) é realmente apenas o fator de conversão entre “pontos” e “mm”, ou seja, 1/72 * 25.4 = 0.352777778 . Infelizmente, a grid faz a distinção sutil entre “pts” e “bigpts”, o que explica por que convertUnit(unit(1, "pt"), "mm", valueOnly=TRUE) fornece o valor ligeiramente diferente de 0.3514598 .

O pacote ‘ggplot2’, como ‘lattice’ antes dele, é construído no pacote grid . Você pode obter as unidades disponíveis em:

 ?grid::unit ?grid::convertX ?grid::convertY grid::convertX(grid::unit(72.27, "points"), "inches") 

(Eu uso o formalismo pkg::func porque na maioria dos casos a grid é carregada aa NAMESPACE mas não anexada quando uma ou outra lattice ou `ggplot2 é carregada).

Anteriormente, postei um comentário que depois foi excluído dizendo que o size estava em pontos. Eu fiz isso depois de ver que o tamanho do texto com size=10 era de aproximadamente 10 mm. O número “mágico” mencionado pelo agstudy está de fato dentro de 1% de:

 as.numeric(grid::convertX(grid::unit(1, "points"), "mm")) #[1] 0.3514598 0.352777778/.Last.value #[1] 1.00375 

De ?aes_linetype_size_shape

 # Size examples # Should be specified with a numerical value (in millimetres), # or from a variable source 

height e width em ggsave referem-se a par("din") de ?par

 din RO; the device dimensions, (width, height), in inches. See also dev.size, which is updated immediately when an on-screen device windows is re-sized. 

Então eu acho que size em aes é em milímetros e ggsave height e width em polegadas.