1. ホーム
  2. その他

[解決済み】エラー。Invalid input: date_trans works with objects of class Date only (無効な入力: date_trans は Date クラスのオブジェクトでのみ動作します)

2022-01-17 03:35:46

質問

Data"という時系列データセットがあり、そこには何年にもわたるサンプリング日でのいくつかの井戸の水位データが含まれています。data.frameの先頭は以下のようになっています。

           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

ggplotを使って、各井戸の水位を時間と共にプロットしようとしています。X軸はquot;Date、Y軸はquot;Elevで、各井戸は異なる色でプロットされます。このプロットは以下のコードで作成し、私の満足のいくものとなりました。

私の問題は、geom_rect で灰色の長方形をオーバーレイして、井戸のポンプがオンになっていた期間を表示しようとしていることです。私は非常に近いと思うが、私は日付の書式設定で何か間違ったことをやっているに違いない、私は次のエラーを取得し続けます。

エラーです。Invalid input: date_trans works with objects of class Date only (無効な入力: date_trans は Date クラスのオブジェクトでのみ動作します)

何かお手伝いできることはありますか?よろしくお願いします。

以下は私のコードです。

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

解決方法は?

問題は Error: Invalid input: date_trans works with objects of class Date only のエリア(これがなくてもプロットされます)。その他のエラー例 このサイト上 で日付を設定する必要があることを指摘した。 geom_rect . そうそう、正しいデバッグエリアにいたんですね。これは動作します。

最小値と最大値を xmin と xmax の呼び出しで囲みます。 as.Date セクションを作成します。

geom_rect

以下のコードを他の人が使用できるようにします。

私は@YourEconProfの提案通り、3つのデータラインのみを作成しました。

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

そうすると、こうなります。