如何应对来自GGPLOT2“类uneval的数据”的错误?(How to deal with “da

2019-09-02 12:19发布

虽然试图覆盖一个新行到现有ggplot我收到以下错误:

Error: ggplot2 doesn't know how to deal with data of class uneval

我的代码的第一部分工作正常。 下面是来自美国中西部地区电力市场的“近期”每小时的风力发电数据的图像。

现在我想覆盖的最后两天值得红色意见。 它应该很容易,但我不明白,为什么我得到一个错误。

任何援助将不胜感激。

下面是一个可再现的例子:

# 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

Answer 1:

当你添加新的数据设置为GEOM您需要使用data=说法。 或者将这些参数正确的顺序mapping=..., data=... 。 看看的论据?geom_line

从而:

p + geom_line(data=df.last, aes(HrEnd, MWh, group=factor(Date)), color="red") 

要么:

p + geom_line(aes(HrEnd, MWh, group=factor(Date)), df.last, color="red") 


Answer 2:

另一个原因是意外地把data=...内侧aes(...)代替以外:

RIGHT:
ggplot(data=df[df$var7=='9-06',], aes(x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)

WRONG:
ggplot(aes(data=df[df$var7=='9-06',],x=lifetime,y=rep_rate,group=mdcp,color=mdcp) ...)

尤其是当你原型与绘图命令会发生这种情况qplot()不使用明确的aes()然后编辑/它复制并粘贴到ggplot()

qplot(data=..., x=...,y=..., ...)

ggplot(data=..., aes(x=...,y=...,...))

可惜的是ggplot的错误消息不缺少“数据”的说法! 而不是这个神秘的废话,因为这是该消息往往意味着。



Answer 3:

如果你引用变量中不存在的data.frame这也可能发生。 比如,最近我忘了告诉ddply我的变数,我在geom_line用于指定线条颜色的一个总结。 然后,ggplot不知道在哪里可以找到我没有在汇总表中创建的变量,我得到这个错误。



文章来源: How to deal with “data of class uneval” error from ggplot2?
标签: r ggplot2