geom_bar 未显示所有值
geom_bar not showing every values
我想画条形图,有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!
但是如果我在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
(线宽)设置为可提供所需条宽的值。当然,您也可以更改颜色。
我想画条形图,有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!
但是如果我在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
(线宽)设置为可提供所需条宽的值。当然,您也可以更改颜色。