ggplot2 – La unidad de tamaño

Una pregunta rápida que no puedo encontrar responde en la web (o el libro de Wickham):

¿Cuál es la unidad del argumento de tamaño en ggplot2? Por ejemplo, geom_text (size = 10) – 10 en qué unidades?

EDIT: la misma pregunta aplica a la unidad predeterminada en ggsave (height = 10, width = 10)

La respuesta es: la unidad son los puntos. Es la unidad de tamaño de fuente en el paquete de grid . En ?unit , encontramos la siguiente definición

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

(pero tenga en cuenta los Big Points. 72 bp = 1 in. “bigpts” estrechamente relacionados Big Points. 72 bp = 1 in. )

Internamente ggplot2 multiplicará el tamaño de fuente por un número mágico ggplot2:::.pt , definido como 1 / 0.352777778 .

Aquí una demostración, creo una carta usando grid y ggplot2 con el mismo tamaño:

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

enter image description here

Adición gracias a @baptiste

El “número mágico” ( definido en aaa-constantes.r como .pt <- 1 / 0.352777778 ) es realmente solo el factor de conversión entre “puntos” y “mm”, es decir, 1/72 * 25.4 = 0.352777778 . Desafortunadamente, la grid hace la distinción sutil entre “pts” y “bigpts”, lo que explica por qué convertUnit(unit(1, "pt"), "mm", valueOnly=TRUE) da el valor ligeramente diferente de 0.3514598 .

El paquete ‘ggplot2’, como ‘enrejado’ antes que él, está construido en el paquete de la grid . Puede obtener las unidades disponibles en:

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

(Uso el formalismo pkg::func porque en la mayoría de los casos la grid se carga en un NAMESPACE pero no se adjunta cuando se cargan lattice o `ggplot2.)

Anteriormente publiqué un comentario que luego borré diciendo que el size estaba en puntos. Lo hice después de ver que el tamaño del texto con size=10 era aproximadamente 10 mm. El número “mágico” mencionado por agstudy está de hecho dentro del 1% de:

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

Desde ?aes_linetype_size_shape

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

height y width en ggsave se relacionan con par("din") desde ?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. 

Así que supongo que el size en aes está en milímetros y la height y el width ggsave están en pulgadas.