2012-07-25 15 views
54

Soy nuevo en ggplot2 y he estado tratando de encontrar una lista exhaustiva de estética. Creo que entiendo su propósito, pero es difícil saber cuál se puede usar en diversas situaciones (principalmente geoms?). El sitio web de Hadley de vez en cuando enumera la estética disponible en páginas para geoms individuales y los doc. R ocasionalmente (aunque más raramente) hacen lo mismo. Incluso encontré un geom para el cual los dos no coinciden del todo.¿Hay una tabla o catálogo de estética para ggplot2?

He buscado a través de los comentarios aquí para obtener una respuesta e incluso he comprado el libro! Por desgracia, no hay ayuda.

Creo que sería fantástico tener una tabla con toda la estética enumerada en una dimensión y todos los geoms (y otros objetos?) Enumerados en otra.

¿Alguien sabe de tal cosa?

¿Hay una manera simple (comando) en R para enumerar todas las características estéticas que se pueden aplicar a un objeto?

Así es como una mesa podría empezar:

List   x  y  fill  size colour linetype . . . 
geom_point Yes  Yes  Yes  Yes  Yes  No 
geom_abline Yes  Yes  No  Yes  Yes  Yes 
. 
. 
. 

un catálogo de definiciones estéticas/parámetros habría una referencia muy útil también.

Respuesta

98

A continuación se muestra la default_aes para cada geom,

  colour size linetype alpha fill weight shape width height angle hjust vjust family fontface lineheight 
abline  black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
area   yes 0.5  1 yes grey20  -- -- --  -- -- -- --  --  --   -- 
bar   yes 0.5  1 yes grey20  1 -- --  -- -- -- --  --  --   -- 
bin2d   yes 0.5  1 yes grey60  1 -- --  -- -- -- --  --  --   -- 
boxplot  grey20 0.5 solid yes white  1 16 --  -- -- -- --  --  --   -- 
contour #3366FF 0.5  1 yes  --  1 -- --  -- -- -- --  --  --   -- 
crossbar  black 0.5  1 yes yes  -- -- --  -- -- -- --  --  --   -- 
density  black 0.5  1 yes yes  1 -- --  -- -- -- --  --  --   -- 
density2d #3366FF 0.5  1 yes  --  1 -- --  -- -- -- --  --  --   -- 
errorbar  black 0.5  1 yes  --  -- -- 0.5  -- -- -- --  --  --   -- 
errorbarh black 0.5  1 yes  --  -- -- -- 0.5 -- -- --  --  --   -- 
freqpoly  black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
hex   yes 0.5  -- yes grey50  -- -- --  -- -- -- --  --  --   -- 
hline  black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
linerange black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
path   black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
point  black 2  -- yes yes  -- 16 --  -- -- -- --  --  --   -- 
pointrange black 0.5  1 yes yes  -- 16 --  -- -- -- --  --  --   -- 
polygon   NA 0.5  1 yes grey20  -- -- --  -- -- -- --  --  --   -- 
quantile #3366FF 0.5  1 yes  --  1 -- --  -- -- -- --  --  --   -- 
raster   -- --  -- yes grey20  -- -- --  -- -- -- --  --  --   -- 
rect   yes 0.5  1 yes grey20  -- -- --  -- -- -- --  --  --   -- 
ribbon   yes 0.5  1 yes grey20  -- -- --  -- -- -- --  --  --   -- 
rug   black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
segment  black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
smooth  #3366FF 0.5  1 0.4 grey60  1 -- --  -- -- -- --  --  --   -- 
step   black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 
text   black 5  -- yes  --  -- -- --  --  0 0.5 0.5    1  1.2 
tile   yes 0.1  1 yes grey20  -- -- --  -- -- -- --  --  --   -- 
violin  grey20 0.5 solid yes white  1 -- --  -- -- -- --  --  --   -- 
vline  black 0.5  1 yes  --  -- -- --  -- -- -- --  --  --   -- 

y el código feo solía cortar esto,

find_aes <- function(geom="point"){ 

    tryCatch({ 
    Geom <- getFromNamespace(paste("Geom", ggplot2:::firstUpper(geom), sep=""), 
          "ggplot2") 

    tmp <- unclass(Geom$default_aes) 
    tmp[is.na(tmp)] <- "yes" 
    data.frame(tmp, stringsAsFactors=FALSE) 
    }, error = function(e) {}) 
} 

funs <- grep("^geom_", ls("package:ggplot2"),val=T) 

geoms <- gsub("^geom_", "", funs) 

all <- lapply(geoms, find_aes) 
names(all) <- geoms 
relevant <- sapply(all, function(x) !is.null(x) && nrow(x) > 0) 
library(plyr) 
results = do.call("rbind.fill",all) 
rownames(results) <- names(relevant[relevant]) 
results[is.na(results)] <- "--" 

options(width=9999) 
capture.output(print(results), file="aes.txt") 
+2

+1! Además, ¿sería cierto que si un geom tiene un valor predeterminado superior que admite ese aes? Creo que sí ... –

+0

Pequeño punto, falta la estética xey. – csgillespie

+0

no es del todo claro para mí cuáles de estas son estéticas reales que se pueden mapear con una escala. – baptiste

5

Tenga una mirada a Aesthetic specifications 's viñeta, por Hadley Wickham:

Esta viñeta resume los diversos formatos que toman las funciones de dibujo de cuadrícula. La mayor parte de esta información está disponible dispersa en toda la documentación de R. Este apéndice lo reúne todo en un solo lugar.

+3

Enlace muerto @ cho7tom. ¿Tienes uno que funcione? Suena interesante. –

+1

Lo encontré y actualicé el enlace – philsf

Cuestiones relacionadas