Ao tentar sobrepor uma nova linha a um ggplot existente, recebo o seguinte erro:
Error: ggplot2 doesn't know how to deal with data of class uneval
A primeira parte do meu código funciona bem. Abaixo está uma imagem de dados "recentes" de geração eólica por hora de um mercado de energia elétrica do meio-oeste dos Estados Unidos.
Agora eu quero sobrepor os últimos dois dias de observações em vermelho. Deve ser fácil, mas não consigo entender por que estou recebendo um erro.
Qualquer ajuda seria muito apreciada.
Abaixo está um exemplo reproduzível:
# 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
Outra causa é colocar acidentalmente
data=...
dentro emaes(...)
vez de fora:Em particular, isso pode acontecer quando você protótipo seu comando plot com
qplot()
, que não usa um explícitoaes()
, e então edita / copia e cola em umggplot()
É uma pena que a mensagem de erro do ggplot não esteja faltando o argumento 'dados'! em vez desse absurdo críptico, porque é isso que essa mensagem geralmente significa.
fonte
Isso também pode ocorrer se você se referir a uma variável no data.frame que não existe. Por exemplo, recentemente esqueci de dizer ao ddply para resumir por uma das minhas variáveis que usei em geom_line para especificar a cor da linha. Então, o ggplot não sabia onde encontrar a variável que eu não havia criado na tabela de resumo e recebi este erro.
fonte