我有一个使用facet_wrap创建的图形,用于可视化许多组的估计密度。其中一些组的方差要小得多。这导致某些面板的x轴不可读。最小可重现示例:
library(tidyverse)
x1 <- rnorm(1e4)
x2 <- rnorm(1e4,mean=2,sd=0.00001)
data.frame(x=c(x1,x2),group=c(rep("1",length(x1)),rep("2",length(x2)))) %>%
ggplot(.) + geom_density(aes(x=x)) + facet_wrap(~group,scales="free")
显而易见的解决问题的方法是增加图形大小,这样一切都变得可读。但是,由于有太多的面板,这并不是一个有用的解决方案。我最喜欢的解决方案是控制轴标记的数量,例如,在所有x轴上只允许两个标记。有没有办法实现这个?
建议后编辑:
添加+ scale_x_continuous(n.breaks = 2)
看起来应该正好符合我的要求,但实际上并不是:
在建议问题使用ggplot2中的facet_grid更改间断数的答案后,我最终得到了两个轴刻度,但不希望有太多的小数点:
equal_breaks <- function(n = 3, s = 0.5, ...){
function(x){
# rescaling
d <- s * diff(range(x)) / (1+2*s)
seq(min(x)+d, max(x)-d, length=n)
}
}
data.frame(x=c(x1,x2),group=c(rep("1",length(x1)),rep("2",length(x2)))) %>%
ggplot(.) + geom_density(aes(x=x)) + facet_wrap(~group,scales="free") + scale_x_continuous(breaks=equal_breaks(n=3, s=0.05), expand = c(0.05, 0))
... + scale_x_continuous(n.breaks = 2)
? - nniloc3
可能更好看! - caldwellst