2016-04-20 5 views
2

Ich dachte, das nls Verfahren in den früheren Versionen von ggplot2 gearbeitet hatte:Warum nls Arbeitsfunktion nicht in ggplot2

df22 <- data.frame(Date = as.Date(c("1997-04-23", "2003-04-01", "2004-10-01", "2007-04-12", "2009-10-04", 
            "2011-05-12", "2012-08-23", "2013-11-08", "2014-10-29", "2015-08-12")), 
       Packages = c(12, 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000)) 

library(ggplot2) 
ggplot(data = df22, aes(x = Date, y = Packages)) + 
    geom_point() + 
    geom_smooth(method = 'nls', formula = y ~ exp(a * x + b), 
       start = c(a = 0.001, b = 3), se = FALSE) 

Jetzt habe ich den Fehler

Error: Unknown parameters: start 

Und meine Sitzung

R version 3.2.4 Revised (2016-03-16 r70336) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

locale: 
[1] LC_COLLATE=Swedish_Sweden.1252 LC_CTYPE=Swedish_Sweden.1252 LC_MONETARY=Swedish_Sweden.1252 
[4] LC_NUMERIC=C     LC_TIME=Swedish_Sweden.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggplot2_2.1.0 broom_0.4.0  asreml_3.0  lattice_0.20-33 dplyr_0.4.3  

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.4  magrittr_1.5  mnormt_1.5-4  munsell_0.4.3 colorspace_1.2-6 R6_2.1.2   
[7] stringr_1.0.0 plyr_1.8.3  tools_3.2.4  parallel_3.2.4 grid_3.2.4  nlme_3.1-125  
[13] gtable_0.2.0  psych_1.5.8  DBI_0.3.1  lazyeval_0.1.10 assertthat_0.1 digest_0.6.9  
[19] reshape2_1.4.1 tidyr_0.4.1  labeling_0.3  stringi_1.0-1 scales_0.4.0 

Warum funktioniert es nicht ?????

+1

Roland Antwort [hier] (http://stackoverflow.com/a/25031125/3283824) sehen, brauchen Sie: 'geom_smooth (method = 'nls', Formel = y ~ exp (a * x + b), method.args = Liste (Start = c (a = 0.001, b = 3)), se = FALSE) ' – beetroot

Antwort

3

In ggplot2 Version 2.0.0 oder höher müssen Sie method.args verwenden Argumente geom_smooth() passieren, zB:

library(ggplot2) 
ggplot(data = df22, aes(x = Date, y = Packages)) + 
    geom_point() + 
    geom_smooth(method = 'nls', formula = y ~ exp(a * x + b), 
      method.args=list(start = c(a = 0.001, b = 3)), se = FALSE) 

Vom ggplot2 NEWS file (Hervorhebung hinzugefügt):

Schichten sind jetzt viel strikter über ihre Argumente - Sie erhalten einen Fehler, wenn Sie ein Argument angegeben haben, das keine Ästhetik oder ein Parameter ist. Dies wird wahrscheinlich einige kurzfristige Schmerzen verursachen, aber auf lange Sicht wird es viel einfacher sein, Rechtschreibfehler und andere Fehler zu erkennen (# 1293).

Diese Änderung bricht eine Handvoll geoms/stats, die ... verwendet, um zusätzliche Argumente für die zugrundeliegende Berechnung zu übergeben. Nun verwenden geom_smooth()/stat_smooth() und geom_quantile()/stat_quantile() stattdessen method.args (# 1245, # 1289); und stat_summary() (# 1242), stat_summary_hex() und stat_summary2d() verwenden fun.args.