2015-05-16 5 views
9

Ich bin ein total R noob Lernggplot. Ich verstehe nicht, warum der erste Ausschnitt funktioniert, während der zweite nicht funktioniert. Ich wollte eine gute binwidth finden, ohne zu raten, also habe ich ein Experiment versucht, das nicht funktioniert hat.Wie man Histogramm-Binbreite dynamisch einstellt

library(ggplot2) 
attach(diamonds) 
d <- diamonds 
x <- ggplot(d, aes(x = price)) 
x <- x + geom_histogram(binwidth = 50) 
x 
# worked fine, but using the sequence and substituting i didn't 
i <- seq(1, 101, by = 10) #tried to avoid the first arg as zero, but didn't work 
x <- ggplot(d, aes(x = price)) 
x <- x + geom_histogram(binwidth = i) 
x 

zweiten wirft einen Fehler

Error in seq.default(round_any(range[1], size, floor), round_any(range[2], : 
    'from' must be of length 1 
Error in exists(name, envir = env, mode = mode) : 
    argument "env" is missing, with no default 

Ich verstehe nicht, was es will. Vielen Dank

+1

Sie müssen 'lapply' verwenden. – Metrics

Antwort

1

Try this:

i<-seq(1,101, by=10) 
x1<- ggplot(d, aes(x=price)) 
x2<-lapply(i,function(i) 
x1+geom_histogram(binwidth=i) 

) 
To access each plot: 
x2[[1]] # for bw 1 
x2[[2]] #bw 11 and so on 
+1

Danke für Ihre Lösung @Metrics, ich fand es nützlich und sehr lehrreich. – drew

2

Sie auch manipulate das Paket betrachten wünschen können, wenn Sie RStudio verwenden:

install.packages("manipulate") 
library(manipulate) 
library(ggplot2) 

df <- diamonds 

manipulate(
    ggplot(df, aes(x = price)) + 
    geom_histogram(binwidth = mybinwidth), 
    mybinwidth = slider(10, 100, step = 10, initial = 20) 
) 

Picture of Manipulate

Abgesehen: Bitte beachten Sie, dass Sie müssen attach(diamonds) nicht verwenden, wenn Sie ggplot2 verwenden. Darüber hinaus werden viele Leute gegen die Verwendung von attach insgesamt argumentieren - und Sie möchten jetzt vielleicht die Gewohnheit zu brechen. Zum Beispiel funktioniert das folgende sehr gut:

ggplot(diamonds, aes(x = price)) + geom_histogram() 
+0

Wow! Vielen Dank @Jason, deine Lösung, es ist ein Augenöffner! Danke auch für den Tipp zum Anhängen ... Ich wusste es einfach nicht besser. – drew

+0

@ user4056279 froh, ich könnte helfen. Learning R ist ein Marathon, kein Sprint. – JasonAizkalns

+1

Für andere Noobs, die sich ihren Weg nach R nirvana gehackt haben, habe ich nach dem Suchen gefunden, warum ich nicht anhängen soll. Es listet mehrere sicherere Alternativen auf. http://www.r-bloggers.com/to-attach-or-not-attach-that-is-the-question/ – drew

Verwandte Themen