
目次
午前
野外調査
午後
データ解析
こんな感じで、ggplotでレイヤ間で異なるデータを使ったら、
ggplot(data=df, aes(x = A, y = B)) +
geom_point() +
geom_line(data = newdf, aes(x = A, y = fit)) +
geom_ribbon(data = newdf, aes(x = A, ymin = lower, ymax = upper)
geom_ribbon( )で、下記のように「B」がないよ、と指摘された。
Error in `geom_ribbon()`:
! Problem while computing aesthetics.
ℹ Error occurred in the 3rd layer.
Caused by error:
! object 'B' not found
これは、最初にaesで「y=B」と指定しているけど、geom_ribbon( )で使っているnewdfにないことが原因(だと思う)。
なぜか、geom_line( )までならエラーがでない。
解決策としては、後のレイヤにaesの継承させないようにすればよい。
aesを継承させないコマンドとして「inherit.aes = FALSE」というのがある。こんな感じで使う。
ggplot(data=df, aes(x = A, y = B)) +
geom_point() +
geom_line(data = newdf,
inherit.aes = FALSE, #継承を切る
aes(x = A, y = fit)) +
geom_ribbon(data = newdf,
inherit.aes = FALSE, #継承を切る
aes(x = A, ymin = lower, ymax = upper))