3

R の既存のプロットにサブプロットを追加したいと思います。サブプロット (挿入図) には異なる背景色が必要です。私は次のことを試しました:

#install.packages("TeachingDemos", dependencies=T)
library(package="TeachingDemos")

d0 <- data.frame(x = rnorm(150, sd=5), y = rnorm(150, sd=5))
d0_inset <- data.frame(x = rnorm(1500, sd=5), y = rnorm(1500, sd=5))

plot(d0)
subplot( 
  fun = plot(
    d0_inset
    , col = 2
    , pch = '.'
    , mgp = c(1,0.4,0)
    , ann = F
    , cex.axis=0.5
  ) 
  , x = grconvertX(c(0.75,1), from='npc')
  , y = grconvertY(c(0,0.25), from='npc')
  , type = 'fig'
  , pars = list(
             mar = c(1.5,1.5,0,0) + 0.1
             , bg = "blue"              # this should change the background color
           )
)

それの助けを借りて、次のsubplot()ように述べていparsます。

を実行する前に par に渡されるパラメータのリストfun

ではグラフィック パラメータの意味が異なるため、プロットの背景色を変更するのは非常に難しいようplot()です。したがって、 を使用して背景色を設定する必要がありますpar()。しかし、なぜこれが機能しないのsubplotですか? par()(また、プロット関数をandを呼び出す外部関数に入れようとしましたplot()が、これは役に立ちませんでした)。

サブプロットが正しく機能しないのはなぜですか?

4

1 に答える 1

3

プロットではなく、デバイスの背景色を変更する引数bgparすでに開いて使用されているデバイスにプロットを追加するだけなので、これは可能ではありません (ペンと紙の方法でbaseプロットが描画されるため)。代わりに(この前の回答に基づいて)できることは次のとおりです。

plot(d0)
subplot(fun = {plot(d0_inset, mgp = c(1,0.4,0), ann = F, cex.axis=0.5);
               rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = "blue");
               points(d0_inset, col=2, pch=".") }, 
        x = grconvertX(c(0.75,1), from='npc'), 
        y = grconvertY(c(0,0.25), from='npc'), 
        pars = list(mar = c(1.5,1.5,0,0) + 0.1), type="fig")

編集:注釈も含む領域を青くしたい場合、私が見る他の解決策は、サブプロットを描画する前に(サブプロット関数に与えた座標を使用して)長方形を描画することです:

plot(d0)
rect(grconvertX(0.75, from='npc'), grconvertY(0, from='npc'),
     grconvertX(1, from='npc'), grconvertY(0.25, from='npc'), 
     col="blue", border=NA)
subplot(fun = plot(d0_inset, mgp = c(1,0.4,0), ann = F, 
                    cex.axis=0.5,col=2, pch=".") , 
        x = grconvertX(c(0.75,1), from='npc'), 
        y = grconvertY(c(0,0.25), from='npc'), 
        pars = list(mar = c(1.5,1.5,0,0) + 0.1), type="fig")
于 2013-06-14T10:27:34.033 に答える