减少ggplot2中条形图组之间的间距

4
我一直无法移除geom_plot中组条两侧的额外空白。我希望能像Roland在这里做的那样:Remove space between bars ggplot2,但是当我尝试实现他的解决方案时,出现错误消息:“警告信息:geom_bar()不再具有binwidth参数,请改用geom_histogram()。” 我在图表中添加了这行代码(尝试不同的宽度):
  geom_histogram(binwidth = 0.5) +

返回的错误信息为"Error: stat_bin()不能与y美学一起使用",且没有绘图。

数据:

mydf<- data.frame(Treatment = c("Con", "Con", "Ex", "Ex"),
             Response = rep(c("Alive", "Dead"), times=2),
             Count = c(259,10,290,21))

 aPalette<-c("#009E73", "#D55E00")

剧情简介:

example<-ggplot(mydf, aes(factor(Response), Count, fill = Treatment)) + 
  geom_bar(stat="identity",position = position_dodge(width = 0.55), width = 
  0.5) + 
  scale_fill_manual(values = aPalette, name = "Treatment") + #legend title
  theme_classic() +
  labs(x = "Response", 
  y = "Count") + 
  scale_y_continuous(breaks = c(0,50,100,150,200,250,275), expand = c(0,0), 
  limits = c(0, 260)) +
  theme(legend.position = c(0.7, 0.3)) +
  theme(text = element_text(size = 15)) #change all text size

  example

返回: enter image description here

Note: 我不知道为什么会出现“警告信息:已删除一个包含缺失值的行(geom_bar)。”,但我不关心它,因为在使用我的实际数据时不会发生这种情况。 **编辑说明 - 这是因为我将y轴的限制设置得比被移除的长条形的最大值低。我不会更改代码,这样我就不必重新绘制图形,但是可以通过更改

来解决问题。
limits = c(0, 260) 

为了

limits = c(0, 300)

会显示所有的条形图。如果有其他人遇到类似的问题,我会找到一个相关的帖子,并在能够链接答案时使这个编辑更加简洁。


你能提供一个可重现的例子吗? [https://dev59.com/eG025IYBdhLWcg3whGSx] - bVa
1个回答

2
如果我完全没有理解你在这里尝试实现什么,请原谅我,但 ggplot 包含如此多的空白之所以是因为您限制了柱形图的宽度并增加了图形的大小。 图形内部的空白是柱形图宽度和图形宽度的输出。
使用您的原始图表... orig graph 我们注意到有很多空白,但您将条形分组设置得很小,并且使图形变宽。 把空间看作是分组和空白之间的妥协。 期望具有小分组和无空白的宽图形是不合逻辑的。 要解决此问题,我们可以减小图形大小或增加分组大小。
首先,我们通过删除您的限制将分组大小恢复到正常水平。 这看起来很荒谬...

enter image description here

但是通过查看您上面提供的“去除ggplot2条形图之间的空格”链接,他所做的只是移除限制和限制宽度。这样做将会得到类似的图表...

similar graph

包括您上面链接中的图表... 在此输入图片描述 并移除所有您的限制... 在此输入图片描述
    example<-ggplot(mydf, aes(factor(Response), Count, fill = Treatment)) + 
  geom_bar(stat="identity",position = position_dodge()) +
  scale_fill_manual(values = aPalette, name = "Treatment") +
  theme_bw() +
  labs(x = "Response", y = "Count")

example

如果您的目标不是通过去除空白使您的图表与链接中的图表相似,请让我知道,除此之外,我希望这可以帮到您。

我一直在拉伸我的图表,以便在演示中字体变大。真不敢相信我犯了这么愚蠢的错误,但还是谢谢你解释了!! - Emily
艾米莉 - 我们可以更改字体大小! - Michael Cantrall
我已经使用theme(text = element_text(size = 45))完成了这个任务(改变所有文本大小),但现在我更好地理解了如何使用绘图视窗。感谢您对如此基础的事情耐心和有帮助! - Emily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接