2012-07-25 4 views
54

Ich bin neu bei ggplot2 und habe versucht, eine umfassende Liste von Ästhetik zu finden. Ich denke, ich verstehe ihren Zweck, aber es ist schwer zu wissen, welche in verschiedenen Situationen (meist Geomes?) Verwendet werden können. Hadleys Website listet gelegentlich verfügbare Ästhetik auf Seiten für einzelne Geome auf, und die R Docs machen gelegentlich dasselbe (wenn auch seltener). Ich habe sogar ein Geom gefunden, mit dem die beiden nicht übereinstimmen.Gibt es eine Tabelle oder einen Katalog von Ästhetik für ggplot2?

Ich suchte die Kommentare hier für eine Antwort und kaufte sogar das Buch! Ach, keine Hilfe.

Ich denke, es wäre fantastisch, einen Tisch mit all den Ästen in einer Dimension und alle geoms (und andere Objekte?) In einem anderen aufgeführt zu haben.

Weiß jemand von so etwas?

Gibt es einen einfachen Weg (Befehl) in R, um all die Ästhetik aufzulisten, die auf ein Objekt angewendet werden kann?

Hier ist, wie eine Tabelle beginnen könnte:

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

Ein Katalog von ästhetischen Definitionen/Parameter als auch eine sehr hilfreiche Referenz seien.

Antwort

98

Unten ist die default_aes für jeden 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  --  -- -- --  -- -- -- --  --  --   -- 

und das hässliche Code, den ich dies zu hacken verwendet,

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 !, wäre es auch wahr, dass, wenn ein Geom einen Standardwert hat, dass es AES unterstützt? Ich denke schon ... –

+0

Kleiner Punkt, die Ästhetik x und y fehlen. – csgillespie

+0

ist mir nicht ganz klar, welche davon echte Ästhetik sind, die mit einer Skala abgebildet werden können. – baptiste

5

einen Blick auf Aesthetic specifications ‚s Vignette haben, von Hadley Wickham:

Diese Vignette fasst die verschiedenen Formate zusammen, die die Rasterzeichnungsfunktionen verwenden. Die meisten dieser Informationen sind verstreut in der R-Dokumentation verfügbar. Dieser Anhang bringt alles an einem Ort zusammen.

+3

Toter Link @ cho7tom. Hast du einen funktionierenden? Hört sich interessant an. –

+1

Ich habe es gefunden und den Link aktualisiert – philsf

Verwandte Themen