7

我正在尝试在带有刻面的 Boxplot 图像上使用自由比例尺。

使用这个示例数据集,如果我尝试这个:

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

绘制不正确的箱线图 http://dl.dropbox.com/u/9788680/plot1.png

在这里,自由比例完全按照我的意愿实现,y 轴的不同比例取决于水平刻面规则的可用因子的数量。然而,箱线图没有被正确描绘(即作为实线而不是箱线图)。在寻找解决方案时,我发现我应该使用 coord_flip() 以正确描绘箱线图,即

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

绘制正确的箱线图,但没有缩放 http://dl.dropbox.com/u/9788680/plot2.png

在上图中,箱线图现在是正确的。但是,因子的自由比例(在 y 轴上)被删除。现在,对于每个水平分面线,现在包括数据集中的所有可用因子,而不仅仅是每个分面可用的因子(如图 1 所示)。

我想知道如何在两个轴上使用自由比例获得正确的刻面,正确描绘箱线图。

如果有人能指出我正确的方向,我将不胜感激。

谢谢。

4

2 回答 2

2

至少从 ggplot2 2.2.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
于 2017-07-08T12:34:15.440 回答
0

我昨天独立注意到水平 bxoplots 显示为线条 - 我还不确定它是错误还是功能,或者它可以更改

在你的情况下,我这样做了

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")

只是颠倒了 x 和 y,还有 facets=_grid 调用,添加了一些颜色并旋转了 x 标签 - 我认为这就是你想要翻转的

于 2014-02-05T17:26:02.010 回答