2012-07-25 15 views
54

Sono nuovo di ggplot2 e ho cercato di trovare un elenco completo di estetica. Penso di capire il loro scopo ma è difficile sapere quale può essere usato in varie situazioni (principalmente geomi?). Il sito Web di Hadley di tanto in tanto elenca le estetiche disponibili sulle pagine per singole geografie e occasionalmente i documenti R (anche se più raramente) fanno lo stesso. Ho persino trovato una geom per la quale i due non corrispondono abbastanza.Esiste un tavolo o un catalogo di estetica per ggplot2?

Ho cercato tra i commenti qui per una risposta e persino comprato il libro! Ahimè, nessun aiuto.

Penso che sarebbe fantastico avere un tavolo con tutte le estetiche elencate in una dimensione e tutte le geom (e altri oggetti?) Elencate in un'altra.

Qualcuno sa di una cosa del genere?

C'è un modo semplice (comando) in R per elencare tutta l'estetica che può essere applicata a un oggetto?

Ecco come una tabella potrebbe iniziare:

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

Un catalogo di definizioni estetiche/parametri sarebbe un punto di riferimento molto utile pure.

risposta

98

seguito è riportato il default_aes per ogni 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  --  -- -- --  -- -- -- --  --  --   -- 

e il codice di brutto che ho usato per incidere questo,

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 !, inoltre, sarebbe vero che se una geom ha un valore predefinito sopra che supporta quello? Penso di sì ... –

+0

Piccolo punto, mancano l'estetica xey. – csgillespie

+0

Non mi è del tutto chiaro quali di questi sono veri estetici che possono essere mappati con una scala. – baptiste

5

Date un'occhiata a Aesthetic specifications s' vignetta, per Hadley Wickham:

Questa vignetta riepiloga i vari formati utilizzati dalle funzioni di disegno della griglia. Molte di queste informazioni sono disponibili sparse nella documentazione R. Questa appendice riunisce tutto in un unico punto.

+3

Dead link @ cho7tom. Hai un lavoro? Sembra interessante. –

+1

L'ho trovato e ho aggiornato il collegamento – philsf

Problemi correlati