La definizione della funzione che @Richard Scriven fa riferimento nel commento è definita in plot-construction.r
, che potrebbe renderlo più chiaro. Avrai bisogno di passare attraverso la fonte per vedere esattamente cosa fanno queste due (non esportate) funzioni (se l'LHS della chiamata è un theme
o un oggetto ggplot
) ma i nomi dovrebbero darti una buona idea. Il valore restituito è e1
modificato da "aggiunta" e2
.
"+.gg" <- function(e1, e2) {
# Get the name of what was passed in as e2, and pass along so that it
# can be displayed in error messages
e2name <- deparse(substitute(e2))
if (is.theme(e1)) add_theme(e1, e2, e2name)
else if (is.ggplot(e1)) add_ggplot(e1, e2, e2name)
}
Quindi, sì, +
è sovraccarico per gli oggetti che ereditano classe gg
(tutti ggplot2
oggetti).
Penso che "pipe" (il commento di @alistaire) sia un'analogia fuorviante; questo è molto nello stile del gruppo Ops standard generico.
fonte
2016-08-08 06:23:10
Non è facile da trovare, ma 'help (" +. Gg ")' contiene le informazioni desiderate. Ho scoperto che '+ .gg' esiste usando' methods ("+") 'con ggplot2 caricato. –
Sì e no; è effettivamente una pipe (Hadley ha scoperto/coauthored magrittr dopo ggplot2 e ha detto che è troppo tardi per cambiare ggplot ora), ma in realtà si sta aggiungendo a un oggetto ggplot, che non viene tracciato fino a quando la chiamata non è completa. Quindi sì, puoi pensare che passi il parametro 'data' tra le funzioni, ma è più utile considerarlo come ... additivo. Avvia un grafico in 'ggplot_build' per avere un'idea di cosa sono gli oggetti all'interno. – alistaire
Grazie ragazzi, per la spiegazione! – mimic