Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2释放边距约束其余边距_R_Ggplot2 - Fatal编程技术网

R ggplot2释放边距约束其余边距

R ggplot2释放边距约束其余边距,r,ggplot2,R,Ggplot2,我非常喜欢facet\u grid,经常发现自己将其与geom\u直方图一起使用。我也喜欢margins=foo参数,因为与聚合组相比,您可以看到所有分布。问题是,当您包含一个边距参数时,它会延伸所有组,以满足通常更宽的边距范围y刻度,因为您现在拥有所有数据。这意味着所有聚合组的y范围都要宽得多,并且很难发现组间的差异。所以我对自己说::self你可以用scales参数来解决这个问题,并允许y变化。这个解决方案的问题是,现在很难比较聚合组,因为它们都有不同的比例。我想要的是让边距是自由的,但其他

我非常喜欢
facet\u grid
,经常发现自己将其与
geom\u直方图一起使用。我也喜欢
margins=foo
参数,因为与聚合组相比,您可以看到所有分布。问题是,当您包含一个边距参数时,它会延伸所有组,以满足通常更宽的边距范围y刻度,因为您现在拥有所有数据。这意味着所有聚合组的y范围都要宽得多,并且很难发现组间的差异。所以我对自己说::self你可以用scales参数来解决这个问题,并允许y变化。这个解决方案的问题是,现在很难比较聚合组,因为它们都有不同的比例。我想要的是让边距是自由的,但其他一切都受到约束,好像比例不是自由的。这可能吗

我在这里展示代码和图片来演示我的意思。如果不清楚,请询问

#create some data
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
   var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
   var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3)
好的,我们把
边距
参数放进去,现在我们可以比较了,但是所有聚合的组直方图都被拉伸到了20,这使得比较它们变得困难(见下图)。好的,让我们设置
比例
为自由。
这个例子并不可怕,因为在我使用的采样方法中,数据分布非常均匀,但在现实生活中,一些单元格只有几个计数,而其他单元格有很多计数,比较结果甚至更糟

这是一个无标度的图。问题是它们确实对聚合分数也是免费的,比较它们是有问题的(一个是14分,一个是8分,一个是7分)。

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2')


那么,有没有办法只允许
页边距
是免费的呢?基本上,我想要的是将创建的第一个图形与第二个图形的页边距拼接在一起。

这一解决方法是否同时可行?您有重复的标题,但可以删除x比例和标签

require(ggplot2)
require(gridExtra)
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
                  var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
                  var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))
dat$var4 <- "All"

windows(width=8, height=8)

p1 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(var2~var3) +


p2 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(~var3)


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5))
require(ggplot2)
需要(额外)
种子(10)

dat我的猜测是否定的,虽然有一个相关的,这对我来说似乎更容易和更合理的实现。@joran我应该基于此提出一个功能请求吗?如果是这样的话,怎么做?
require(ggplot2)
require(gridExtra)
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
                  var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
                  var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))
dat$var4 <- "All"

windows(width=8, height=8)

p1 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(var2~var3) +


p2 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(~var3)


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5))