1

ggplot我想用and绘制条形图geom_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!

错误的情节

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,我添加了情节。奇怪的是,当我在第一种情况下调整绘图窗口的大小时,绘制的数据发生了变化!

4

1 回答 1

2

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

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

尝试colour="blue"在您的第一个绘图中添加(或“红色”或其他),我认为您会看到所有条形,即使没有调整大小。另一方面,尝试在您的第二个图上更改colour="rain"fill="rain",看看这是否会在您的第二个图上产生“数据消失”效果。

更新:响应您的评论,您可以使用颜色参数,然后设置线宽以获得您想要的条形厚度,因此您并不需要fill. 例如:

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

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

于 2015-03-13T15:33:33.357 回答