我想用ggplot
和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
所以有人知道为什么geom_bar
在没有color
的情况下无法正常工作?因为如果有时并非所有数据都被正确地绘制,我就不能依赖它......
谢谢!
编辑以回复@ eipi10,我添加了图表。奇怪的是,当我在第一种情况下调整绘图窗口的大小时,绘制的数据会发生变化!
答案 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)
(线宽)设置为一个值,即可获得所需的条宽。当然,你也可以改变颜色。