FOUT: ongeldige invoer: DATE_TRANS WERKEN MET OBJECTEN VAN KLASSE DATUM ALLEEN

Ik heb een tijdreekse dataset genaamd “Gegevens” die wateraanzichtgegevens bevat voor verschillende putjes gedurende vele jaren van bemonsteringsdata. Het hoofd van de gegevens. Frame ziet er als volgt uit:

          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

Ik probeer GGPLOT te gebruiken om in de loop van de tijd waterhoogte te plotten voor elk putje, zodanig dat mijn X-as “Datum is”, mijn Y-as is “EFF” en elk putje wordt uitgezet in een andere kleur. Ik heb deze plot gemaakt met de onderstaande code en het is tot mijn tevredenheid.

Mijn probleem is dat ik probeer grijze rechthoeken met GEOM_RECT te overliggen om de perioden waarin een putpomp aan de gang was. Ik denk dat ik heel dichtbij ben, maar ik moet iets verkeerd doen met datumopmaak (?), Omdat ik de volgende foutmelding krijg:

FOUT: ongeldige invoer: DATE_TRANS WERKT MET OBJECTIE VAN KLASSE DATUM ALLEEN

alle hulp? Alvast bedankt!

Hier is mijn code:

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

Antwoord 1, autoriteit 100%

Het probleem lijkt in je geom_rectgebied te zitten (het plot zonder dit). Andere “date_trans”-fouten op deze sitewijzen erop dat het nodig is om datums in te stellen met as.Date. Dus ja, je was in het juiste debug-gebied. Dit werkt:

Wikkel uw minimum en maximum in xmin en xmax call in geom_rectsectie:

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

DE ONDERSTAANDE CODE VOOR ANDEREN TE GEBRUIKEN

Ik heb alleen drie datalijnen gemaakt zoals @YourEconProf suggereerde.

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

Wat krijgt u dit:

Other episodes