2013-07-22 39 views
14

Với acf chúng tôi có thể tạo ACF plot trong biểu đồ cơ sở R.ACF Lô bằng ggplot2: Đặt chiều rộng của geom_bar

x <- lh 
acf(x) 

enter image description here

Các mã sau đây có thể được sử dụng để có được những ACF plot trong ggplot2.

conf.level <- 0.95 
ciline <- qnorm((1 - conf.level)/2)/sqrt(length(x)) 
bacf <- acf(x, plot = FALSE) 
bacfdf <- with(bacf, data.frame(lag, acf)) 

library(ggplot2) 
q <- ggplot(data=bacfdf, mapping=aes(x=lag, y=acf)) + 
     geom_bar(stat = "identity", position = "identity") 
q 

enter image description here

Câu hỏi

Làm thế nào để có được dòng chứ không phải thanh hoặc làm thế nào để thiết lập độ rộng của thanh để họ trông giống như dòng? Cảm ơn

+2

Lưu ý rằng có một trình bao bọc 'ggplot2' cho điều này: https://github.com/dewittpe/qwraps. Cài đặt với 'devtools :: install_github (" dewittpe/qwraps ")'. – krlmlr

+0

Đây là bài viết cực kỳ hữu ích. Tôi đang tự hỏi nếu tạo Stata giống như * [Cross-correlogram cho chuỗi thời gian bivariate] (http://www.stata.com/support/faqs/graphics/gph/graphdocs/cross-correlogram-for-bivariate-time- series /) * sẽ đạt được với việc sử dụng phương pháp được đề xuất? – Konrad

+2

@konrad thử mã sau: 'thư viện (ggfortify) p1 <- autoplot (acf (AirPassengers, plot = FALSE), conf.int.fill = '# 0000FF', conf.int.value = 0.8, conf.int .type = 'ma') print (p1) thư viện (cowplot) ggdraw (switch_axis_position (p1, axis = 'xy', keep = 'xy')) ' – MYaseen208

Trả lời

17

Bạn đang có lẽ tốt hơn hết âm mưu với đoạn thẳng qua geom_segment()

library(ggplot2) 

set.seed(123) 
x <- arima.sim(n = 200, model = list(ar = 0.6)) 

bacf <- acf(x, plot = FALSE) 
bacfdf <- with(bacf, data.frame(lag, acf)) 

q <- ggplot(data = bacfdf, mapping = aes(x = lag, y = acf)) + 
     geom_hline(aes(yintercept = 0)) + 
     geom_segment(mapping = aes(xend = lag, yend = 0)) 
q 

enter image description here

+1

Câu trả lời này là siêu cũ (và vẫn hữu ích). Chỉ cần lưu ý rằng bạn đã quên thêm 'geom_hline (aes (yintercept = ciline), linetype = 3, color = 'darkblue') + geom_hline (aes (yintercept = -ciline), linetype = 3, color = 'darkblue')' để bắt chước các dòng trong ô cơ bản ban đầu – Romain

+0

Đường gạch chéo: linetype = 2 – Rottmann

5

Cách sử dụng geom_errorbar với chiều rộng = 0?

ggplot(data=bacfdf, aes(x=lag, y=acf)) + 
    geom_errorbar(aes(x=lag, ymax=acf, ymin=0), width=0) 
3

@ Konrad; thử đoạn mã sau:

library(ggfortify) 
p1 <- autoplot(acf(AirPassengers, plot = FALSE), conf.int.fill = '#0000FF', conf.int.value = 0.8, conf.int.type = 'ma') 
print(p1) 
library(cowplot) 
ggdraw(switch_axis_position(p1, axis = 'xy', keep = 'xy')) 

enter image description here

+2

Mã này không tạo hình bạn đã đính kèm, vùng màu xanh dương là hình chữ nhật trong mã bạn đã trình bày –

0

Từ gói dự báo được đưa ra một chức năng ggtsdisplay rằng âm mưu cả ACF và PACF với ggplot. x là số dư từ mẫu phù hợp (fit$residuals).

forecast::ggtsdisplay(x,lag.max=30) 
Các vấn đề liên quan