2014-10-12 3 views
6

के साथ टीएस ऑब्जेक्ट प्लॉटिंग मुझे आश्चर्य है कि ts ऑब्जेक्ट सीधे ggplot2 के साथ साजिश करने के लिए कोई फ़ंक्शन है या नहीं। अतीत में, मैं निम्नलिखित रणनीति का उपयोग कर रहा था लेकिन अब यह एक त्रुटि फेंक रहा है।सीधे ggplot2

set.seed(12345) 
dat <- ts(data=runif(n=10, min=50, max=100), frequency = 4, start = c(1959, 2)) 
df <- data.frame(date=as.Date(time(dat)), Y=as.matrix(dat)) 
library(ggplot2) 
ggplot(data=df, mapping=aes(x=date, y=Y))+geom_point() 

त्रुटि

Error in as.Date.default(time(dat)) : 
    do not know how to convert 'time(dat)' to class “Date” 

मैं अत्यधिक सराहना करते हैं अगर किसी ने मुझे मार्गदर्शन कैसे सीधे ts वस्तु ggplot2 साथ प्लॉट करने के लिए होगा। आपकी सहायता के लिये पहले से ही धन्यवाद।

+0

लिए काम करता है कोई 'as.Date.ts' तरीका है। आपके सबूत कहां हैं कि यह अतीत में काम करता था? –

+0

@ बॉन्डडडस्ट: कृपया संदर्भ के लिए [यहां] (http://stackoverflow.com/a/25353201/707145) देखें। – MYaseen208

+0

बस 'as.Date' – DatamineR

उत्तर

8

इस प्रयास करें:

library(zoo) 
library(ggplot2) 
library(scales) 

autoplot(as.zoo(dat), geom = "point") 

या हो सकता है:

autoplot(as.zoo(dat), geom = "point") + scale_x_yearqtr() 

अधिक जानकारी के लिए ?autoplot.zoo देखें।

नोट: वैसे, यदि प्रश्न library(zoo) आदेश जारी करते हैं तो प्रश्न में कोड काम करता है।

अपडेट दूसरा समाधान जोड़ा गया, library(scales) और yearmon से yearqtr करने लगे।

+0

ऑटोप्लॉट (as.zoo (डेटा), geom =" point ") के बजाय 'as.numeric' का उपयोग करें) + scale_x_yearmon() त्रुटि के साथ मेरे लिए काम नहीं करता है" as.yearmon में त्रुटि (pretty_breaks (n) (x)): फ़ंक्शन "pretty_breaks" नहीं मिला – Meso

+0

(+1): धन्यवाद @ जी। ग्रिथेंडिएक आपके अच्छे उत्तर के लिए। – MYaseen208

+0

@ जी। ग्रिथेंडिएक: यदि आप मुझे मार्गदर्शन करते हैं कि वर्षों के साथ क्वार्टर कैसे प्राप्त करें एक्स-अक्ष में। मैंने 'scale_y_yearqtr (format = "% y-% q") की कोशिश की, लेकिन सालों से क्वार्टर नहीं मिल सका। आपकी मदद के लिए धन्यवाद। – MYaseen208

5

पता नहीं क्यों यह पहले (क्योंकि यह तिथि functins की मेरी समझ के तहत मान्य प्रतीत नहीं होता है) में काम किया, लेकिन आप चिड़ियाघर :: के उपयोग के साथ यह ठीक कर सकते हैं as.yearqtr

library(zoo) 
?as.yearqtr 
set.seed(12345) 
dat <- ts(data=runif(n=10, min=50, max=100), frequency = 4, start = c(1959, 2)) 
df <- data.frame(date=as.Date(as.yearqtr(time(dat))), Y=as.matrix(dat)) 
library(ggplot2) 
ggplot(data=df, mapping=aes(x=date, y=Y))+geom_point() 
# No errors. The plot has YYYY-MM labeling as expected for a ggplot2-Date axis. 
2

इस कोड को मुझे

set.seed(12345) 
dat <- ts(data=runif(n=10, min=50, max=100), frequency = 4, start = c(1959, 2)) 
library(ggfortify) 
autoplot(dat, geom = "point", ts.colour = ('dodgerblue3')) #Option 1 

library(zoo) 
autoplot.zoo(as.zoo(dat), geom = "point") #Option 2 
+0

अधिक सुरुचिपूर्ण उत्तर के लिए धन्यवाद @ राफेल। – MYaseen208