グラフィックスのグローバルを定義したいかもしれませんが、一部のレイヤーではそれらを除外しaes()
ます。ggplot()
たとえば、次の例を想定します。
foo <- data.frame(x=runif(10),y=runif(10))
bar <- data.frame(x=c(0,1),ymin=c(-.1,.9),ymax=c(.1,1.1))
p <- ggplot(foo,aes(x=x,y=y))+geom_point()
すべてが良いです。ただし、リボンを追加しようとすると:
p <- p + geom_ribbon(data=bar, aes(x=x,ymin=ymin,ymax=ymax), alpha=.1)
# Error: Discrete value supplied to continuous scale
このエラーは、 にも適用されるy
global の一部として既に定義されているために発生しますが、 にはそれがありません。aes()
geom_ribbon()
bar
このエラーを回避する 2 つの可能性を見つけました。そのうちの 1 つはy=y
、元のから削除することですggplot(foo,aes(x=x,y=y))
が、将来的には毎回、 に追加する必要がある何かを描画する必要がありますがy=y
、aes()
これは良くありません。
他の可能性は、に偽のy
列を追加することbar
です:
bar = cbind(bar, y=0)
p <- p + geom_ribbon(data=bar, aes(x=x,ymin=ymin,ymax=ymax), alpha=.1)
今はうまくいきます。ただし、偽の変数であるため、そのように振る舞うのは好きではありません。を呼び出すときに既に定義aes()
されているを一時的に無効にする方法はありますか?ggplot()
geom_ribbon()