以前の質問で、新しいポイントを既存のグロブに追加する方法を尋ねたところ、新しいポイントのビューポートを指定する必要があることがわかりました。これは、コードが同じ環境で実行される場合に十分簡単です。次のような関数からグロブが返された場合:
getgrob = function(x, y) {
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')
wholeplot
}
myplot = getgrob(1:10, rnorm(10))
今、私はいくつかの新しいポイントを持っています:
x = 1:10
y = rnorm(10)/2
datavp
これらのポイントを追加するにはビューポートが必要ですが、これはmyplot
グロブを介してのみ利用できます。この場合、ビューポートにアクセスするにはどうすればよいですか?