aesの一覧表を見たい

## Q

aesで指定できるパラメータはグラフ（geom）の種類によって違いますが、どこかに一覧表はありますか？ 対応するドキュメントを`?geom_XXX`で見れば書いてありますが、まとめて一覧で見たいんです。

## A

残念ながら、ドキュメントに一覧表は用意されていませんが、それぞれのgeomに指定できるパラメータとその初期値は以下のようになっています。（`yes`となっているものは、使えるけど初期値が設定されていないパラメータ、`required`は指定が必須のパラメータです）


|geom          |colour  |size |linetype |alpha |fill   |x        |y        |weight |ymin     |ymax     |minor params                                                                                                                            |
|:-------------|:-------|:----|:--------|:-----|:------|:--------|:--------|:------|:--------|:--------|:---------------------------------------------------------------------------------------------------------------------------------------|
|Abline        |black   |0.5  |1        |yes   |--     |--       |--       |--     |--       |--       |slope=required, intercept=required                                                                                                      |
|AnnotationMap |yes     |0.5  |1        |yes   |grey20 |--       |--       |--     |--       |--       |                                                                                                                                        |
|Area          |yes     |0.5  |1        |yes   |grey20 |required |required |--     |--       |--       |                                                                                                                                        |
|Bar           |yes     |0.5  |1        |yes   |grey20 |required |--       |--     |--       |--       |                                                                                                                                        |
|Blank         |--      |--   |--       |--    |--     |--       |--       |--     |--       |--       |                                                                                                                                        |
|Boxplot       |grey20  |0.5  |solid    |yes   |white  |required |--       |1      |required |required |shape=19, outlier.colour=black, outlier.shape=19, outlier.size=1.5, outlier.stroke=0.5, lower=required, upper=required, middle=required |
|Contour       |#3366FF |0.5  |1        |yes   |--     |required |required |1      |--       |--       |                                                                                                                                        |
|Crossbar      |black   |0.5  |1        |yes   |yes    |required |required |--     |required |required |                                                                                                                                        |
|Curve         |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |xend=required, yend=required                                                                                                            |
|CustomAnn     |--      |--   |--       |--    |--     |--       |--       |--     |-Inf     |Inf      |xmin=-Inf, xmax=Inf                                                                                                                     |
|Density       |black   |0.5  |1        |yes   |yes    |required |required |1      |--       |--       |                                                                                                                                        |
|Density2d     |#3366FF |0.5  |1        |yes   |--     |required |required |--     |--       |--       |                                                                                                                                        |
|Dotplot       |black   |--   |--       |yes   |black  |required |required |--     |--       |--       |                                                                                                                                        |
|Errorbar      |black   |0.5  |1        |yes   |--     |required |--       |--     |required |required |width=0.5                                                                                                                               |
|Errorbarh     |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |xmin=required, xmax=required, height=0.5                                                                                                |
|Hex           |yes     |0.5  |--       |yes   |grey50 |required |required |--     |--       |--       |                                                                                                                                        |
|Hline         |black   |0.5  |1        |yes   |--     |--       |--       |--     |--       |--       |yintercept=required                                                                                                                     |
|Label         |black   |3.88 |--       |yes   |white  |required |required |--     |--       |--       |angle=0, hjust=0.5, vjust=0.5, family=, fontface=1, lineheight=1.2, label=required                                                      |
|Line          |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |                                                                                                                                        |
|Linerange     |black   |0.5  |1        |yes   |--     |required |--       |--     |required |required |                                                                                                                                        |
|Logticks      |black   |0.5  |1        |1     |--     |--       |--       |--     |--       |--       |                                                                                                                                        |
|Map           |yes     |0.5  |1        |yes   |grey20 |--       |--       |--     |--       |--       |map_id=required                                                                                                                         |
|Path          |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |                                                                                                                                        |
|Point         |black   |1.5  |--       |yes   |yes    |required |required |--     |--       |--       |shape=19, stroke=0.5                                                                                                                    |
|Pointrange    |black   |0.5  |1        |yes   |yes    |required |required |--     |required |required |shape=19, stroke=1                                                                                                                      |
|Polygon       |yes     |0.5  |1        |yes   |grey20 |required |required |--     |--       |--       |                                                                                                                                        |
|Quantile      |#3366FF |0.5  |1        |yes   |--     |required |required |1      |--       |--       |                                                                                                                                        |
|Raster        |--      |--   |--       |yes   |grey20 |required |required |--     |--       |--       |                                                                                                                                        |
|RasterAnn     |--      |--   |--       |yes   |grey20 |required |required |--     |--       |--       |                                                                                                                                        |
|Rect          |yes     |0.5  |1        |yes   |grey20 |--       |--       |--     |required |required |xmin=required, xmax=required                                                                                                            |
|Ribbon        |yes     |0.5  |1        |yes   |grey20 |required |--       |--     |required |required |                                                                                                                                        |
|Rug           |black   |0.5  |1        |yes   |--     |--       |--       |--     |--       |--       |                                                                                                                                        |
|Segment       |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |xend=required, yend=required                                                                                                            |
|Smooth        |#3366FF |1    |1        |0.4   |grey60 |required |required |1      |--       |--       |                                                                                                                                        |
|Spoke         |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |angle=required, radius=required                                                                                                         |
|Step          |black   |0.5  |1        |yes   |--     |required |required |--     |--       |--       |                                                                                                                                        |
|Text          |black   |3.88 |--       |yes   |--     |required |required |--     |--       |--       |angle=0, hjust=0.5, vjust=0.5, family=, fontface=1, lineheight=1.2, label=required                                                      |
|Tile          |yes     |0.1  |1        |yes   |grey20 |required |required |--     |--       |--       |                                                                                                                                        |
|Violin        |grey20  |0.5  |solid    |yes   |white  |required |required |1      |--       |--       |                                                                                                                                        |
|Vline         |black   |0.5  |1        |yes   |--     |--       |--       |--     |--       |--       |xintercept=required                                                                                                                     |

これを生成するコードはこんな感じです。

```r
library(dplyr)
library(purrr)
library(ggplot2)
e      <- asNamespace('ggplot2')
Geoms  <- grep("^Geom.+", ls(e), value = TRUE)

geoms  <- 
  Geoms %>%
  map(get, envir = e)

f <- function(geom) {
  aes_default <- geom$default_aes %>%
    map_if(is.na,  ~ ("yes")) %>%
    map_if(~ . == "NA", ~ ("yes")) %>%
    map(as.character) %>%
    as.list
  
  aes_required <- setNames(rep("required", length(geom$required_aes)),
                           geom$required_aes )
  
  c(geom = sub("Geom", "", class(geom)[1]),
    aes_default,
    aes_required)
}

aeses <- geoms %>%
  map(f) %>%
  bind_rows

# NAの数で分割
is_few_na <- function(col) sum(is.na(col)) < 35
aeses_major <- keep(aeses, is_few_na)
aeses_minor <- discard(aeses, is_few_na)

aeses_minor <-
  aeses_minor %>%
  by_row(. %>%
           discard(is.na) %>%
           paste(names(.), ., sep = "=", collapse = ", "),
         .labels = FALSE) %>%
  rename(`minor params` = .out)

result <- bind_cols(aeses_major, aeses_minor)

# 見やすいようにNAは--で表示する
result[is.na(result)] <- '--'

# Markdown用のテーブルを出力
knitr::kable(result)
```

### 参考

この記事は、以下のstackoverflowの内容を参考に書き起こしました:

* [Is there a table or catalog of aesthetics for ggplot2? - Stack Overflow](http://stackoverflow.com/questions/11657380/is-there-a-table-or-catalog-of-aesthetics-for-ggplot2)