ggplot2中geom_bar的宽度和间距

43

我希望使用ggplot制作条形图。绘图后,当我执行导出 > 复制到剪贴板 ,然后尝试调整图表大小时,随着我改变图表的大小,条之间的间隙也会改变位置(条之间的间隙改变了位置)。

我希望我说得清楚。我用了以下代码:

ggplot(df, aes(Day, Mean)) +
 geom_histogram(stat = "identity", position = "stack") +
 theme(axis.text = element_text(size=12, colour =  'black')) +
 ylim(0, 50) + xlim(0, 365)

我尝试使用 geom_bargeom_histogram,两者似乎给出相同的图形。并且当我调整大小时,条之间的间隙会改变。

P.S.我必须绘制 365 个条,每个表示一年中的一天。如果您认为我表述不清,请随意编辑问题。

plot i created with the code provided here

这是由代码生成的图。您可以清楚地看到不均匀的间隔。

这是数据: data

编辑

数据

df <- data.frame(Mean=c(0,0,0,0,0,0,0.027272727,0,0.409090909,0.009090909,0,0,0,0,0,0.054545455,0.036363636,0.118181818,0.327272727,0.254545455,0,0,1.609090909,1.636363636,0,0.181818182,1.2,0.090909091,0.409090909,0.418181818,1.018181818,0.409090909,0.127272727,0.072727273,0.054545455,1.2,0.127272727,0.290909091,0,0.518181818,0.254545455,0.454545455,1.545454545,1.1,1.763636364,0,0.136363636,0.7,0.445454545,1.954545455,0.018181818,0,2.618181818,0,0,3.518181818,7.645454545,2.709090909,5.909090909,0.9,1.109090909,2.354545455,0.418181818,0.272727273,0,0,1.636363636,0,2.927272727,0.472727273,1,0,2.109090909,0.490909091,0.827272727,2.663636364,4.8,0.554545455,6.3,3.936363636,2.218181818,0.045454545,0,7.109090909,0,3.745454545,3.009090909,8.818181818,6,21.99090909,2.845454545,3.918181818,1.4,12.32727273,1.136363636,4.345454545,1.018181818,2.927272727,12.53636364,2.618181818,0.709090909,5.645454545,5.345454545,3.181818182,2.681818182,13.96363636,3.990909091,9.9,12.54545455,8.545454545,11.43636364,6.281818182,1.836363636,11.4,4.827272727,16.14545455,3.581818182,1.972727273,3.4,4.472727273,18.86363636,5,11.4,5.790909091,3.745454545,1.072727273,2.581818182,5.063636364,12.42727273,9.2,10.85454545,15.18181818,5.963636364,22.53636364,5.027272727,7,4.572727273,7.190909091,15.42727273,7.3,23.48181818,30.87272727,19.62727273,6.463636364,16.20909091,9.509090909,5.1,8.127272727,5.890909091,11.84545455,10.14545455,4.518181818,15.23636364,22.41818182,21.62727273,7.245454545,19.56363636,33.94545455,26.98181818,9.027272727,11.28181818,20.44545455,27.52727273,23.25454545,28.77272727,20.04545455,30.68181818,28.32727273,12.38181818,13.54545455,18.17272727,12.97272727,38.14545455,20.2,14.30909091,39.44545455,34.4,34.49090909,23.32727273,29.37272727,50.68181818,23.2,16.28,35.02,49,18.86,30.96,37.83,33.01,44.31,25.51,33.76,15.05,24.8,8.99,15.72,41.31,41.47,28.12,44.22,30.63,37.35,15.72,12.86,21.89,18.02,6.32,4.73,24.16,29.12,11.58,24.25,22.69,15.7,24.36,20.05,17.19,26.71,17.84,16.53,9.3,5.11,10.97,19.95,5.65,29.88,34.95,24.14,32.09,9.85,17.49,13.72,7.97,26.21,24.9,26.45,14.1,9.52,18.64,13.43,15.17,26.61,9.84,24.9,16.42,19.58,17.58,22.96,39.61,22.83,15.49,23.64,16.71,3.96,10.17,19.04,28.42,16.64,4.95,9.73,13.45,11.67,8.02,8.71,8.31,17.65,8.41,7.19,11.94,5.15,5.54,5.21,0.88,0.96,6.18,9.46,10.24,17.29,8.95,16.51,6.31,11.4,5.05,8.28,0.26,0,6.19,1.02,0.99,0.94,1.87,0,0.21,3.32,3.33,7.82,2.65,5.21,0.49,1.59,0.05,2.25,0,0,1.09,0.42,0,0.05,0.02,0,0.18,0,0.02,0.05,0.09,0.01,1.01,0,0,2.38,0.42,0.65,0,0,0,0.4,0,0,0,0,0.18,0,0,0,0,0,0.63,0,0,0,0.1,0,0,0,0,0,1.35,0,0,0,0,0,1.62,0.2,0,0,0,1.3,0,0,0,0,0.89,4.55,0), Day=seq(1, 365, 1))

附加一点数据。这不意味着你在某些天没有观察到吗? - Mateusz1981
是的,有一些缺失数据持续了几天,但随着我调整图形大小,这些空白的位置也在改变。 - Shreta Ghimire
@ShretaGhimire 将数据添加到帖子中。链接可能会失效。 - Heroka
所以问题是导出后的图形吗?如果是,尝试将其导出为“eps”格式。 - Mateusz1981
@Mateusz1981 我已经在编辑后添加了数据。 - Shreta Ghimire
@Mateusz1981 是的,问题出现在绘图导出过程中。 - Shreta Ghimire
2个回答

72

width 设置为一个较小的值并指定 color,可以使所有柱状图之间都有间隙,这正是我想要的结果:

ggplot(df, aes(x = Day, y = Mean)) +
  geom_bar(stat = "identity", width = 0.1, color = "black") +
  theme_bw() +
  theme(axis.text = element_text(size = 12))

生成的图表:

enter image description here


如果不想有空隙,请使用 width = 1:

ggplot(df, aes(x = Day, y = Mean)) +
  geom_bar(stat = "identity", width = 1) +
  theme_bw(base_size = 12) 

生成的图表:

在此输入图像描述


6

使用定位元素中的宽度可以解决旁边并排的栏问题:

geom_bar(width=0.1, position = position_dodge(width=0.2))

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