Al intentar superponer una nueva línea a un ggplot existente, aparece el siguiente error:
Error: ggplot2 doesn't know how to deal with data of class uneval
La primera parte de mi código funciona bien. A continuación se muestra una imagen de datos "recientes" de generación eólica por hora de un mercado de energía eléctrica del medio oeste de Estados Unidos.
Ahora quiero superponer las observaciones de los últimos dos días en rojo. Debería ser fácil, pero no puedo entender por qué recibo un error.
Cualquier ayuda será muy apreciada.
A continuación se muestra un ejemplo reproducible:
# Read in Wind data
fname <- "https://www.midwestiso.org/Library/Repository/Market%20Reports/20130510_hwd_HIST.csv"
df <- read.csv(fname, header=TRUE, sep="," , skip=7)
df <- df[1:(length(df$MKTHOUR)-5),]
# format variables
df$MWh <- as.numeric(df$MWh)
df$Datetime <- strptime(df$MKTHOUR, "%m/%d/%y %I:%M %p")
# Create some variables
df$Date <- as.Date(df$Datetime)
df$HrEnd <- df$Datetime$hour+1
# Subset recent and last data
last.obs <- range(df$Date)[2]
df.recent <- subset(df, Date %in% seq(last.obs-30, last.obs-2, by=1))
df.last <- subset(df, Date %in% seq(last.obs-2, last.obs, by=1))
# plot recent in Grey
p <- ggplot(df.recent, aes(HrEnd, MWh, group=factor(Date))) +
geom_line(color="grey") +
scale_y_continuous(labels = comma) +
scale_x_continuous(breaks = seq(1,24,1)) +
labs(y="MWh") +
labs(x="Hour Ending") +
labs(title="Hourly Wind Generation")
p
# plot last two days in Red
p <- p + geom_line(df.last, aes(HrEnd, MWh, group=factor(Date)), color="red")
p
Otra causa es colocar accidentalmente el
data=...
interior enaes(...)
lugar del exterior:En particular, esto puede suceder cuando crea un prototipo de su comando de trazado con
qplot()
, que no usa un explícitoaes()
, luego lo edita / copia y pega en unggplot()
¡Es una lástima que el mensaje de error de ggplot no sea el argumento "datos" que faltan! en lugar de estas tonterías crípticas, porque eso es lo que a menudo significa este mensaje.
fuente
Esto también podría ocurrir si hace referencia a una variable en el data.frame que no existe. Por ejemplo, recientemente olvidé decirle a ddply que resuma por una de mis variables que usé en geom_line para especificar el color de la línea. Entonces, ggplot no sabía dónde encontrar la variable que no había creado en la tabla de resumen y recibí este error.
fuente