1

次のようなグロブを生成したとします。

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)

これでうまくいきました。

4

1 に答える 1

2
datapts2 <- pointsGrob(x=1:10, y=rnorm(10), pch=20, 
                       size=unit(1.3, 'mm'), name='datapts2')
?gTree
wholeplot <- addGrob(wholeplot, datapts)

wholeplot私が推測するオブジェクトを再構築することもできます。2 番目の points-grob は「子」リストにありません。そうする代わりに、私にはほとんど同じように見えます:

wholeplot = gTree(children=gList(dataplot, datapts2),
                   vp=plotvp, name='wholeplot')
str(wholeplot)
于 2013-10-23T23:10:45.327 に答える