Rのパッケージを使用してインタラクティブなプロットを設計していgrid
ます。インタラクティブ性の一環として、プロットのさまざまな部分を繰り返し削除して再作成します。ただし、グリッド要素の総数 (grid.ls()
コマンドを使用して取得) は一定のままです。私が作成したものはすべて以前に削除されました。
問題は次のとおりです-作成と削除のサイクルを数回行った後、グラフィックを削除するたびに、どんなに小さくても、プロットのすべてのインタラクティブな部分が発生します(削除と作成を繰り返してきたもの)ちらつきます。
これが私が思いつく最も簡単な例です - 最初にこのコードを実行してgrid
グラフィックを設定し、特定の要素を繰り返し削除して再作成します
library(grid)
pushViewport(viewport())
for (x in seq(0, 1, length=5))
{
for (y in seq(0, 1, length=5))
{
pushViewport(viewport(x = x, y = y, width=1/5, height=1/5, name=paste("foo", x, y, sep="")))
grid.rect()
pushViewport(viewport(x = 0, 0, width=1/4, height=1/4, name="bar1"))
grid.circle(name="testing")
grid.text("123")
upViewport()
pushViewport(viewport(x = 1, 0, width=1/4, height=1/4, name="bar2"))
grid.circle(name="testing")
grid.text("123")
upViewport()
pushViewport(viewport(x = 0, 1, width=1/4, height=1/4, name="bar3"))
grid.circle(name="testing")
grid.text("123")
upViewport()
pushViewport(viewport(x = 1, 1, width=1/4, height=1/4, name="bar4"))
grid.circle(name="testing")
grid.text("123")
upViewport()
upViewport()
}
}
for (i in 1:10)
{
grid.gremove("testing")
for (x in seq(0, 1, length=5))
{
for (y in seq(0, 1, length=5))
{
downViewport(paste("foo", x, y, sep=""))
downViewport("bar1"); grid.circle(name="testing"); upViewport()
downViewport("bar2"); grid.circle(name="testing"); upViewport()
downViewport("bar3"); grid.circle(name="testing"); upViewport()
downViewport("bar4"); grid.circle(name="testing"); upViewport()
upViewport()
}
}
}
これがすべて設定されたら、デバイス上に新しい任意の正方形を作成します
grid.rect(height=0.5, width=0.5, gp=gpar(lty = 2), name = "lastShape")
今すぐ削除してみてください
grid.gremove("lastShape")
この最後の削除コマンドを実行すると、作成および削除したすべての小さな円が、触れていなくてもわずかにちらつくことに注意してください。これにより、グラフィック全体が非常に気になります。
それを防ぐ方法はありますか?
どうもありがとう!