【发布时间】:2020-03-02 17:16:01
【问题描述】:
来自这个数据框
df <- data.frame(cat=c(rep("X", 20),rep("Y", 20), rep("Z",20)),
value=c(runif(20),runif(20)*100, rep(0, 20)),
var=rep(LETTERS[1:5],12))
我想创建分面箱线图。
library(ggplot2)
p1 <- ggplot(df, aes(var,value)) + geom_boxplot() + facet_wrap(~cat, scale="free")
p1
结果在美学上并不令人满意,因为它将空面板的 y 轴居中于零。我想从零开始所有 y 尺度。我尝试了这个earlier question的几个答案:
p1 + scale_y_continuous(expand = c(0, 0)) # not working
p1 + expand_limits(y = 0) #not working
p1 + scale_y_continuous(limits=c(0,NA)) ## not working
p1 + scale_y_continuous(limits=c(0,100)) ## partially working, but defeats scale="free"
p1 + scale_y_continuous(limits=c(0,max(df$value))) ## partially working, see above
p1 + scale_y_continuous(limits=c(0,max(df$value))) + expand_limits(y = 0)## partially working, see above
一种解决方案可能是将零替换为非常小的值,但也许您可以找到更直接的解决方案。谢谢。
【问题讨论】:
-
似乎这可能是作为问题提交github.com/tidyverse/ggplot2/issues 的好候选人。但是您如何期望绘图为 Z 面板选择最大值 y 值?我不确定那里有明显的默认值。
-
好点。也许到 max(df$value))?