geom_bar 未显示所有值

geom_bar not showing every values

我想画条形图,有ggplotgeom_bar,但是好像geom_bar的行为不一致。我不明白为什么。

我的数据是降水时间序列:

library(ggplot2)
library(data.table)
library(lubridate)
set.seed(42)
dt1 <- data.table(dateHeure=seq(ymd_hms("2014-06-04 13:30:00"), 
                ymd_hms("2014-10-20 08:30:00"), by='1 hour'),
     rain=sample(c(rep(5,15), rep(10,15), rep(20,10), 
             rep(30, 5), 40, rep(0, 3262)))) 

然后我绘制它,并没有显示所有数据...为什么缺少一些数据?

ggplot(data=dt1)+
geom_bar(aes(x=dateHeure, y=rain),        
      stat="identity", 
      fill="blue")  # doesn't work!

但是如果我在aes中添加变量color,那么情节是正确的!

 ggplot(data=dt1)+
geom_bar(aes(x=dateHeure, y=rain, color="rain"),     
 stat="identity",
 width=0.2)  # work properly

有人知道为什么 geom_bar 没有 color 就不能正常工作吗?因为如果有时不是所有数据都正确绘制,我不能依赖它...

谢谢!

编辑: 回复@eipi10,我添加了情节。奇怪的是,当我在第一种情况下调整绘图 window 大小时,绘制的数据发生了变化!

根据对您问题的编辑,我想我知道发生了什么:在第一个情节中,您使用 fill="blue"。但是与 x 轴的整体范围相比,bin 宽度非常小。这会导致非常非常细的垂直条——细到您在屏幕上看不到其中的一些,但是当您扩展绘图的物理宽度时它们会出现。

另一方面,在您的第二个绘图中,您使用了 colour="rain",它为每个条形添加了一个边框,使每个条形更粗,因此即使绘图的物理宽度相对较小,它们也是可见的小的。

尝试将 colour="blue"(或 "red" 或其他)添加到您的第一个绘图中,我想您会看到所有条形图,即使没有调整大小。另一方面,尝试将第二个图上的 colour="rain" 更改为 fill="rain",看看是否会在第二个图上产生 "disappearing data" 效果。

更新:针对您的评论,您可以使用颜色参数,然后设置线宽以准确获得您想要的条形粗细,这样您就不会真的需要 fill。例如:

ggplot(data=dt1)+
  geom_bar(aes(x=dateHeure, y=rain),        
           stat="identity",
           colour="blue", lwd=0.5)

只需将 lwd(线宽)设置为可提供所需条宽的值。当然,您也可以更改颜色。