1. ホーム
  2. r

[解決済み] ggplot2 の "data of class uneval" エラーに対処する方法は?

2022-01-28 11:34:02

質問

既存の行に新しい行をオーバーレイしようとしているとき ggplot 以下のようなエラーが発生します。

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

私のコードの最初の部分は問題なく動作します。以下は、米国中西部の電力市場における1時間ごとの風力発電データの画像です。

今度は、過去2日分の観測値を赤でオーバーレイしたい。 簡単なはずなのですが、なぜかエラーになってしまいます。

何かサポートがあれば、とてもありがたいです。

以下は再現性のある例です。

# 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

解決方法は?

新しいデータセットを 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")