2016-01-29 19 views
9

ich dieses einfaches Beispiel in dem Coursera R Regressionsmodelle Kurs gegeben nachzubilden versuchen:Wie Löss Methode in GGally :: ggpairs verwendet Wrap-Funktion

require(datasets) 
data(swiss) 
require(GGally) 
require(ggplot2) 
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess"))) 

ich ein 6x6 Paare Grundstück zu erwarten - einem Streudiagramm mit Löss-Glättung und Konfidenzintervallen für jede Kombination der 6 Variablen in den Schweizer Daten.

Allerdings bekomme ich folgende Fehlermeldung:

Error in display_param_error() : 'params' is a deprecated argument. Please 'wrap' the function to supply arguments. help("wrap", package = "GGally")

Ich schaute durch die ggpairs() und wrap() Hilfe-Dateien und haben viele Permutationen der wrap() und wrap_fn_with_param_arg() Funktionen ausprobiert.

Ich kann dies wie erwartet an der Arbeit:

ggpairs(swiss, lower = list(continuous = wrap("smooth"))) 

Aber sobald ich den Löss Teil in hinzufügen, es funktioniert nicht:

ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess"))) 

ich diesen Fehler, wenn ich die Zeile oben versucht .

Error in value[3L] : The following ggpair plot functions are readily available: continuous: c('points', 'smooth', 'density', 'cor', 'blank') combo: c('box', 'dot', 'facethist', 'facetdensity', 'denstrip', 'blank') discrete: c('ratio', 'facetbar', 'blank') na: c('na', 'blank')

diag continuous: c('densityDiag', 'barDiag', 'blankDiag') diag discrete: c('barDiag', 'blankDiag') diag na: c('naDiag', 'blankDiag')

You may also provide your own function that follows the api of function(data, mapping, ...){ . . . } and returns a ggplot2 plot object Ex: my_fn <- function(data, mapping, ...){ p <- ggplot(data = data, mapping = mapping) + geom_point(...) p } ggpairs(data, lower = list(continuous = my_fn))

Function provided: loess

Offensichtlich betrete ich Löß an der falschen Stelle. Kann mir jemand helfen, zu verstehen, wie man den Löß-Teil hinzufügt?

Beachten Sie, dass mein Problem anders ist als this one, da ich frage, wie Löss in ggpairs implementieren, da das Argument params veraltet wurde.

Vielen Dank.

Antwort

17

Eine schnelle Möglichkeit ist eine eigene Funktion zu schreiben ... die man unten aus dem von der ggpairs Fehlermeldung

library(GGally) 
library(ggplot2)  
data(swiss) 

# Function to return points and geom_smooth 
# allow for the method to be changed 
my_fn <- function(data, mapping, method="loess", ...){ 
     p <- ggplot(data = data, mapping = mapping) + 
     geom_point() + 
     geom_smooth(method=method, ...) 
     p 
    } 

# Default loess curve  
ggpairs(swiss[1:4], lower = list(continuous = my_fn)) 

enter image description here

# Use wrap to add further arguments; change method to lm 
ggpairs(swiss[1:4], lower = list(continuous = wrap(my_fn, method="lm"))) 

enter image description here

in Ihrer Frage zur Verfügung gestellt wurde bearbeitet

Dies vielleicht g Íves ein bisschen mehr Kontrolle über die Argumente, die jedem geon_

my_fn <- function(data, mapping, pts=list(), smt=list(), ...){ 
       ggplot(data = data, mapping = mapping, ...) + 
         do.call(geom_point, pts) + 
         do.call(geom_smooth, smt) 
       } 

# Plot 
ggpairs(swiss[1:4], 
     lower = list(continuous = 
         wrap(my_fn, 
          pts=list(size=2, colour="red"), 
          smt=list(method="lm", se=F, size=5, colour="blue")))) 
+2

, die so hilfreich ist, vielen Dank! – meenaparam

7

geben werden Vielleicht Online-Kurs Regression Models Sie nehmen die Coursera und versuchen, die Rmarkdown Datei durch den Verlauf gegeben zu konvertieren Datei in HTML und kommen über diese Fehler wie ich es tue.

Die Art und Weise habe ich versucht, aus ist:

require(datasets); data(swiss); require(GGally); require(ggplot2) 
g = ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "lm"))) 
g 

Sie können auch versuchen method="loess" verwenden, aber das Ergebnis sieht ein wenig anders als in der Vorlesung bekannt gegeben. method = "lm" kann eine bessere Passform wie ich sehe.

+0

Vielen Dank für das vorschlagen, aber wenn ich Ihren Code versuchen, erhalte ich einen Fehler Fehler: Unbekannte Parameter: Methode – meenaparam

+1

@meenaparam In meinem Fall habe ich keine Fehler. Einige 'R.version'-Ausgaben: _platform_ 'x86_64-pc-linux-gnu', _os_' linux-gnu', _version.string_ 'R Version 3.3.3 (2017-03-06)'. – Cryptor

+0

Das funktioniert jetzt für mich, sie müssen 'ggally' aktualisiert haben, danke! – meenaparam

1

Ich vermutete auch, dass Sie Courseras Klasse genommen haben. Ich konnte jedoch kein Github Repo mit den Beispielen von ggplot finden.

Hier ist, was ich es funktioniert tat:

gp = ggpairs(swiss, lower = list(continuous = "smooth")) 
gp 
+0

Danke @ Firefighter1017, aber das ergibt eine lineare Passform ('lm') anstatt einen Löss glatter, als ich wollte. Siehe oben die Antwort von @ scarain, damit der Code funktioniert. – meenaparam