2017-01-23 10 views
5

मेरे पास "डेटा" नामक एक टाइम श्रृंखला डेटासेट है जिसमें कई वर्षों के नमूने की तारीखों में कई कुओं के लिए जल उन्नयन डेटा होता है।त्रुटि: अमान्य इनपुट: date_trans कक्षा की वस्तुओं के साथ काम करता है दिनांक केवल

  Date   Well Elev 
1 2002-05-23   MW-3 929.04 
2 2002-05-29   MW-3 929.39 
3 2002-05-31   MW-3 929.37 
4 2002-06-05   MW-3 929.36 
5 2002-06-12   MW-3  NA 
6 2002-06-13   MW-3 929.47 
7 2002-06-19   MW-3 929.42 
8 2002-06-26   MW-3 930.02 
9 2002-07-05   MW-3 930.00 

मैं अच्छी तरह से प्रत्येक के लिए समय के साथ पानी ऊंचाई साजिश ggplot उपयोग करने के लिए कोशिश कर रहा हूँ, इस तरह है कि मेरे x- अक्ष है "दिनांक," मेरी y- अक्ष है: data.frame के सिर इस तरह दिखता है "एलिव" और प्रत्येक कुएं को एक अलग रंग में प्लॉट किया जाता है। मैंने इस साजिश को नीचे दिए गए कोड के साथ बनाया है, और यह मेरी संतुष्टि के लिए है।

मेरी समस्या यह है कि मैं भूरे रंग के आयतों के साथ भूरे रंग के आयतों को ओवरले करने की कोशिश कर रहा हूं ताकि वे एक अच्छी पंप चालू हो सकें। मुझे लगता है कि मैं बहुत करीब हूँ, लेकिन मैं कुछ दिनांक प्रारूपण के साथ गलत कर रही होगी, क्योंकि मैं निम्नलिखित त्रुटि प्राप्त हो रही (?):

Error: Invalid input: date_trans works with objects of class Date only

किसी भी मदद की? अग्रिम में धन्यवाद!

यहाँ मेरी कोड है:

#Import and fix up data 
Data = read.csv("water_elevation_for_R_date.csv", stringsAsFactors=FALSE) 
colnames(Data)[1] <- "Date" 
Data$Date = as.Date(Data$Date, format = "%m/%d/%Y") 
Data$Well <- as.factor(Data$Well) 
Data$Elev <- as.numeric(Data$Elev) 

#Load ggplot and scales 
library(ggplot2) 
library(scales) 

#Create graph 
ggplot(data= Data, aes(x = Date, y = Elev, group = Well, colour = Well)) + 
geom_line(size = 0.75) + 
xlab("") + ylab("Elevation (ft.)") + 
scale_color_brewer(palette = "Spectral") + 
scale_x_date(breaks = date_breaks("2 year"), 
      labels = date_format("%Y")) + 
theme_bw()+ 
theme(plot.background = element_blank(), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     panel.border = element_blank(), 
     axis.line.x = element_line(color = "black"), 
     axis.line.y = element_line(color = "black")) + 
geom_rect(data = Data, 
      aes(xmin = "2004-04-29", 
       xmax = "2004-12-20", 
       ymin = -Inf, 
       ymax = Inf), 
      fill = "gray", 
      alpha = 0.5) 
+0

आप 'dput (डेटा)' के उत्पादन में दे सकते हैं? –

+0

हाय जे कॉन, क्षमा करें - मैं यहां पोस्ट करने के लिए नया हूं, और 'ड्यूटी (डेटा)' का आउटपुट टिप्पणी और मूल पोस्ट दोनों के लिए बहुत लंबा है। आउटपुट कैसे प्राप्त करें इस पर कोई सुझाव? – snalven

+0

कुछ सुझावों के लिए इसे पढ़ें। https://www.r-bloggers.com/three-tips-for-posting-good-questions-to-r-help-and-stack-overflow/ –

उत्तर

4

समस्या अपने geom_rect क्षेत्र में हो रहा है (यह इस बिना भूखंडों)। as.Date के साथ दिनांक सेट करने के लिए अन्य "date_trans" त्रुटियां on this site इंगित करने के लिए इंगित करें। तो हाँ, आप सही डीबग क्षेत्र में थे। यह काम करता है:

geom_rect खंड में xmin और xmax कॉल में अपने न्यूनतम और अधिकतम लपेटें:

aes(xmin = as.Date("2004-04-29", "%Y-%m-%d"), 
    xmax = as.Date("2004-12-20", "%Y-%m-%d"), 

दूसरों के लिए कोड नीचे उपयोग करना

मैं केवल तीन डेटा लाइनों बनाया के रूप में @YourEconProf सुझाव ।

#Import and fix up data 
#Data = read.csv("water_elevation_for_R_date.csv", stringsAsFactors=FALSE) 
#Date   Well Elev 
#1 2002-05-23   MW-3 929.04 
#2 2002-05-29   MW-3 929.39 
#3 2002-05-31   MW-3 929.37 
# etc... 
Data = data.frame(Date = c(as.Date("2002-05-23", "%Y-%m-%d"), 
          as.Date("2002-05-29", "%Y-%m-%d"), 
          as.Date("2002-05-31", "%Y-%m-%d")), 
        Well = c("MW-3","MW-3","MW-3"), 
        Elev = c(929.04, 929.39, 929.37)) 

colnames(Data)[1] <- "Date" 
Data$Date = as.Date(Data$Date, format = "%m/%d/%Y") 
Data$Well <- as.factor(Data$Well) 
Data$Elev <- as.numeric(Data$Elev) 

#Load ggplot and scales 
library(ggplot2) 
library(scales) 

#Create graph 
ggplot(data= Data, aes(x = Date, y = Elev, group = Well, colour = Well)) + 
    geom_line(size = 0.75) + 
    xlab("") + ylab("Elevation (ft.)") + 
    scale_color_brewer(palette = "Spectral") + 
    scale_x_date(breaks = date_breaks("2 year"), 
       labels = date_format("%Y")) + 
    theme_bw()+ 
    theme(plot.background = element_blank(), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     panel.border = element_blank(), 
     axis.line.x = element_line(color = "black"), 
     axis.line.y = element_line(color = "black")) + 
    geom_rect(data = Data, 
      aes(xmin = as.Date("2004-04-29", "%Y-%m-%d"), 
       xmax = as.Date("2004-12-20", "%Y-%m-%d"), 
       ymin = -Inf, 
       ymax = Inf), 
      fill = "gray", 
      alpha = 0.5) 

जो तुम हो जाता है इस:

3lines of data chart

+1

धन्यवाद बहुत micstr! मैंने डेट के रूप में उपयोग करने का प्रयास किया था लेकिन मुझे एहसास नहीं हुआ कि मुझे प्रारूप निर्दिष्ट करना था। – snalven

+0

हाय, मुझे लगता है कि आप SO के लिए नए हैं। अगर आपको लगता है कि मेरा जवाब समस्या हल हो गया है, तो कृपया इसे हरे रंग की चेक मार्क पर क्लिक करके 'स्वीकृत' के रूप में चिह्नित करें। धन्यवाद। – micstr

संबंधित मुद्दे