2012-05-24 23 views
7

Ich versuche freie Skalen auf einem Boxplot-Bild mit Facettierung zu haben.ggplot2: Boxplot mit facet_grid und freiem Maßstab

Mit diesem Beispiel-Datensatz, wenn ich versuche, dies:

ggplot(data=mpg) + 
geom_boxplot(aes(x=cty, y=model))+ 
facet_grid(manufacturer ~ drv, scales = "free", space = "free") 

Plot incorrect boxplot http://dl.dropbox.com/u/9788680/plot1.png

Hier ist die freie Waage implementiert genau wie ich mag, mit den verschiedenen Skalen für die y-Achse in Abhängigkeit von die Anzahl der verfügbaren Faktoren für eine horizontale Facettenregel. Die Boxplots werden jedoch nicht korrekt dargestellt (d. H. Als durchgezogene Linien anstelle von Boxplots). richtig die boxplot dargestellt werden, um verwenden coord_flip sollte, das heißt

ggplot(data=mpg) + 
geom_boxplot(aes(x=model,y=cty))+ 
facet_grid(manufacturer ~ drv, scales = "free", space = "free")+ 
coord_flip() 

Plot correct boxplot, but no scaling http://dl.dropbox.com/u/9788680/plot2.png

In obigem Bild sind die Boxplots jetzt korrekt Wenn Sie nach einer Lösung suchen, fand ich, dass ich() um. Die freie Skalierung für die Faktoren (also auf der y-Achse) wird jedoch entfernt. Jetzt werden für jede horizontale Facettenlinie ALLE verfügbaren Faktoren über den Datensatz hinweg einbezogen, anstatt nur die für jede Facette verfügbaren Faktoren (wie in Abbildung 1).

Ich würde gerne wissen, wie ich die richtige Facettierung mit einer freien Skala auf beiden Achsen bekommen kann, die den Boxplot korrekt abbildet.

Wenn mir jemand in die richtige Richtung zeigen könnte, wäre ich dankbar.

Danke. gestern

+0

ich das gleiche Problem bemerkt, wenn die Beantwortung [http://stackoverflow.com/a/10729264/1385941](http://stackoverflow.com/a/10729264/1385941). Meine Vermutung ist, weil 'coord_flip()' 'coord_cartesian' und nicht' scale_continuous' aufruft. 'scale_' und' coord_' beeinflussen die Darstellung unterschiedlich. Es könnte sich lohnen, dies als "Problem" unter [https://github.com/hadley/ggplot2](https://github.com/hadley/ggplot2) – mnel

+0

zu melden. Vielen Dank für diesen Kommentar. Hoffentlich kann jemand eine Abhilfe schaffen. Wenn keine weiteren Kommentare gepostet werden, werde ich dieses Problem wie vorgeschlagen melden. Vielleicht könnte ein Analog zu geom_errorbarh auch für Boxplots geschrieben werden. – coenvh

+0

Es gibt keine aktuelle Problemumgehung; Boxplots sind nur vertikal (kontinuierliche Variable ist y) und kann nur mit 'coord_flip()' umgedreht werden, aber das vermasselt die Facettenskalen, wie Sie sehen. Siehe https://groups.google.com/d/msg/ggplot2/u5a1mpnJR7E/XxwXWNDX77MJ –

Antwort

0

bemerkte ich, unabhängig voneinander, dass horizontale bxoplots zeigt als Linien - Ich bin noch nicht sicher, ob es ein Fehler ist, oder eine Funktion, oder sie es ca

in Ihrem Fall geändert werden, ich habe diese

library(ggplot2) 
ggplot(data=mpg) + 
    geom_boxplot(aes(y=cty, x=model,fill=model))+ 
    facet_grid(manufacturer~drv, scales = "free", space = "free")+theme(axis.text.x=element_text(angle=90),legend.position="none") 

umgekehrt nur x und y, und auch die Facetten = _grid Anruf, hinzugefügt etwas Farbe und gedreht x Etiketten - ich denke, das ist das, was Sie gerade blätterte wollen, ist

+0

Ich habe Ihr Beispiel versucht, aber in diesem Fall handelt es sich um * vertikale * Boxplots! Dies ist nicht die Handlung, die ich erzeugen wollte.Ich habe versucht, horizontale Boxplots zu bekommen, nicht vertikal. Also im Grunde das erste Beispiel in meinem Beitrag, aber dann die tatsächlichen Boxplots, nicht diese Zeilen ... – coenvh

+0

Es wurde erklärt, dass ggplot nicht horizontale Box Plots tun, ich zeigte Ihnen, wie Sie eine sehr ähnliche Version einfach umgedreht – user1617979

+1

erstellen können Ja, aus früheren Kommentaren wurde diese scheinbare ggplot-Beschränkung klar. Wie auch immer, meine Frage war über vertikale Boxplots ... also löst Ihr Vorschlag, obwohl er geschätzt wird, nicht wirklich mein Problem :) – coenvh

1

Das gewünschte Verhalten zumindest ab ggplot2 2.2 unterstützt .1.


library(ggplot2) 
ggplot(data=mpg[which(mpg$manufacturer %in% c('audi', 'hyundai', 'jeep')),]) + 
    geom_boxplot(aes(x=model,y=cty)) + 
    facet_grid(manufacturer ~ drv, scales = "free", space = "free") + 
    coord_flip() 

sessionInfo() 
#> R version 3.3.2 (2016-10-31) 
#> Platform: x86_64-apple-darwin13.4.0 (64-bit) 
#> Running under: OS X El Capitan 10.11.6 
#> 
#> locale: 
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 
#> 
#> attached base packages: 
#> [1] stats  graphics grDevices utils  datasets methods base  
#> 
#> other attached packages: 
#> [1] ggplot2_2.2.1 
#> 
#> loaded via a namespace (and not attached): 
#> [1] Rcpp_0.12.11   digest_0.6.12  rprojroot_1.2  
#> [4] plyr_1.8.4   grid_3.3.2   gtable_0.2.0   
#> [7] backports_1.0.5  magrittr_1.5   evaluate_0.10.1  
#> [10] scales_0.4.1.9002 rlang_0.1.1.9000  stringi_1.1.5  
#> [13] reshape2_1.4.2  lazyeval_0.2.0  rmarkdown_1.6.0.9001 
#> [16] labeling_0.3   tools_3.3.2   stringr_1.2.0  
#> [19] munsell_0.4.3  yaml_2.1.14   colorspace_1.3-2  
#> [22] htmltools_0.3.6  knitr_1.16   tibble_1.3.3 
Verwandte Themen