gpt4 book ai didi

r - 网格 : Grid graphics flickering

转载 作者:行者123 更新时间:2023-12-01 01:07:14 25 4
gpt4 key购买 nike

我正在使用 grid 设计一个交互式绘图R 中的包。作为交互性的一部分,我反复删除并重新创建绘图的各个部分。但是,网格元素的总数(使用 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")

请注意,当您运行最后一个删除命令时,我创建和删除的所有小圆圈都会轻微闪烁,即使我没有触摸它们。这使得整个图形非常分散注意力。

任何想法如何防止这种情况?

太感谢了!

最佳答案

@hadley - 你大老板!您的第一条评论提供了正确答案;我正在复制它并在此处扩展以供将来引用...

您需要做的就是使用

dev.hold()

# .... do scary modifications ...

dev.flush()

似乎是一种享受。如果它再次中断,我会重新发布。

注意:这仅在 R v3 及更高版本中可用...

关于r - 网格 : Grid graphics flickering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com