次のようなグロブを生成したとします。
require(grid)
x = 1:10
y = rnorm(10)
plotvp = plotViewport(c(5, 5, 3, 3), name='plotvp')
datavp = dataViewport(x, y, name='datavp')
datapts = pointsGrob(x, y, pch=20, size=unit(1.3, 'mm'), name='datapts')
xaxis = xaxisGrob()
yaxis = yaxisGrob()
xlab = textGrob('X Label', y=unit(-3, 'lines'), name='xlab')
ylab = textGrob('Y Label', x=unit(-3, 'lines'), rot=90, name='ylab')
plotbox = rectGrob()
dataplot = gTree(children=gList(datapts,
xaxis, yaxis,
xlab, ylab,
plotbox),
vp=datavp, name='dataplot')
wholeplot = gTree(children=gList(dataplot),
vp=plotvp, name='wholeplot')
ここで、新しいポイント セットを挿入します。
x = 1:10
y = rnorm(10)
wholeplot
どうやってそれを行うことができますか?
@DWin の回答によると、次のことを行いました。
x=1:10
y=rnorm(10)
datapts2 <- pointsGrob(x, y, pch=15, size=unit(1.3, 'mm'), name='datapts2')
wholeplot <- addGrob(wholeplot, datapts2)
grid.newpage()
grid.draw(wholeplot)
system('sleep 1')
datapts2 <- pointsGrob(x, y, pch=15, size=unit(1.3, 'mm'), name='datapts2')
wholeplot <- gTree(children=gList(dataplot, datapts2), vp=plotvp, name='wholeplot')
grid.newpage()
grid.draw(wholeplot)
system('sleep 1')
効果は見られませんでした。
試行錯誤の末、新しいデータ ポイントのビューポートを指定する必要があることに気付きました。
x=1:10
y=rnorm(10)
datapts2 <- pointsGrob(
x, y, default.units='native',
pch=15, size=unit(1.3, 'mm'), name='datapts2',
vp=datavp
)
wholeplot <- addGrob(wholeplot, datapts2)
grid.newpage()
grid.draw(wholeplot)
これでうまくいきました。