2016-11-17 74 views
0

我試圖用ggplot繪製一個晚上的烏龜築巢活動的分佈,但是我想排除從上午8點到下午6點的時間。另外,我需要X軸在晚上7點開始,並在上午7點結束。在R中繪製連續的時間數據

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") 

任何援助將真正理解。

+0

對於任何人給你一個特定的答案,你需要提供你正在使用的數據,所以我們可以得到一個匹配數據結構的答案。也就是說,請提供'dput(sub.1)'的結果。這就是說,通常,你會想要過濾'sub.1'得到公正夜間數據,並存儲'sub.1 $ time'在合適的日期,時間格式得到你想要的順序。 –

回答

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") 

編輯

改了一部分,以確定要保留的時間,不排除哪些。我認爲它更容易遵循

0

我的方法使用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所做的相同。