在R中绘制连续的时间数据

时间:2016-11-17 16:26:28

标签: r plot

我正在尝试使用ggplot绘制一夜间海龟筑巢活动的分布情况,但我想将时间从上午8点到下午6点排除。另外,我需要x轴从晚上7点开始,到早上7点结束。

enter image description here

我的代码是

ggplot(sub.1) + geom_bar(aes(x = sub.1$time)) + scale_x_continuous(expand = c(0, 0), limits = c(0, 23), breaks = seq(0, 23, 1)) + xlab("Hour") +  ylab ("Frequency")

真的很感激任何帮助。

2 个答案:

答案 0 :(得分:1)

试试这个。当我有机会时,我会在那里发表一些评论。希望它有所帮助!

# Example Data
SampleHours <- sample(1:23, 3000, replace = TRUE)

# Keep wanted Hours
IncludedHours <- c(19:23, 1:7)
Index <- SampleHours %in% IncludedHours

# Create dataframe
sub.1 <- data.frame(Hour = SampleHours[Index])

# Change the factor levels
sub.1$Hour <- as.factor(sub.1$Hour)

FactorLevels <- c(19:23, 1:7)

levels(sub.1$Hour) <- FactorLevels

# Plot

library(ggplot2)


ggplot(sub.1) + 
  geom_bar(aes(x = sub.1$Hour)) + 
  xlab("Hour") +  
  ylab ("Frequency")

修改

更改了部件以确定要保留的小时数,而不是要排除的小时数。我认为这样可以更容易理解

答案 1 :(得分:1)

我的方法使用dplyr。首先,我生成了一些假数据:

times = sample(seq(0,23), 10000, replace=T)
nest = sample(c(0,1), 10000, replace=T)
data = data.frame(times, nest)

然后,我使用dplyr来管道结果:

library(dplyr)
data %>% filter(times>18 | times<8) %>%
  transform(times=factor(times, levels=c(19:23,0:7))) %>%
  ggplot() + geom_bar(aes(x=times)) +
  xlab("Hour") +
  ylab ("Frequency")

filter来电选择小时数; transform与@William做同样的操作来创建订单19-7。