geom_bar没有显示每个值

时间:2015-03-12 09:41:05

标签: r ggplot2 data.table geom-bar

我想用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!

wrong plot

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

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

ok_plot

所以有人知道为什么geom_bar在没有color的情况下无法正常工作?因为如果有时并非所有数据都被正确地绘制,我就不能依赖它......

谢谢!

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

1 个答案:

答案 0 :(得分:1)

根据您对问题的修改,我想我知道发生了什么:在第一个图中,您使用fill="blue"。但是,与x轴的整个范围相比,箱宽度非常小。这会产生非常非常薄的垂直条 - 非常薄,您无法在屏幕上看到它们中的一些,但是当您扩展绘图的物理宽度时它们会出现。

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

尝试将colour="blue"(或&#34;红色&#34;或其他)添加到您的第一个图中,我认为即使没有调整大小,您也会看到所有条形图。另一方面,尝试在第二个图上将colour="rain"更改为fill="rain",看看是否会创建&#34;消失的数据&#34;对你的第二个情节的影响。

更新:为了回应您的评论,您可以使用颜色参数,然后设置线宽以获得您想要的条形粗细,这样您就不需要{{ 1}}。例如:

fill

只需将ggplot(data=dt1)+ geom_bar(aes(x=dateHeure, y=rain), stat="identity", colour="blue", lwd=0.5) (线宽)设置为一个值,即可获得所需的条宽。当然,你也可以改变颜色。