使用ggplot2在直方图中缩放POSIXlt数据

时间:2013-08-14 09:11:17

标签: r ggplot2 histogram

如何以“2013-07-01 00:30:00”形式更改x轴的标签?

library(ggplot2)

a<-as.POSIXlt("2013-07-01 00:30:00")
b<-as.POSIXlt("2013-07-5 00:30:00")
aI<-as.numeric(a)
bI<-as.numeric(b)

times<-sample(seq(aI,bI,by=2),100)
ggplot(, aes(x=times)) + 
geom_histogram(aes(y=..count..),binwidth=10000, colour="black") +
theme(axis.text.x = element_text(angle=45))

我正在寻找一个添加曲线的功能

 geom_density(alpha=.2, fill="#FF6666")

但是在上面的图中,曲线适合于..count ..属性。

1 个答案:

答案 0 :(得分:1)

您将数字x值传递给ggplot。您应该传递d​​atetime值并使用scale_x_datetime

times <- sample(seq(a, b, by = 2), 100)

library(scales)
ggplot(, aes(x = times)) + 
  geom_histogram(aes(y= ..count.. ), binwidth = 10000, colour = "black") +
  theme(axis.text.x = element_text(angle = 45)) +
  scale_x_datetime(labels = date_format("%Y-%m-%d %H:%M:%S"))

您不能将密度添加到绘图中,因为y轴刻度不适合(密度和stat_density的计数都不适合)。如果您只关心密度曲线的形状,可以使用geom_density(alpha = .2, fill = "#FF6666", aes(y = ..scaled.. * 7.5))

修改

根据你的评论,你似乎想要这个:

ggplot(, aes(x = times)) + 
  geom_histogram(aes(y= ..density..), binwidth = 10000, colour = "black") +
  theme(axis.text.x = element_text(angle = 45)) +
  scale_x_datetime(labels = date_format("%Y-%m-%d %H:%M:%S")) +
  geom_density(alpha = .2, fill = "#FF6666")

由于您在y = ..count..中明确指定了geom_histogram,因此会引起混淆(尽管这是默认设置)。