这是我的GUI“标题”:
library(gWidgets2RGtk2)
library(cairoDevice)
library(ggplot2)
WINGRAPH0 <- gwindow("")
WINGRAPH <- gvbox(container=WINGRAPH0)
以下代码不起作用:
gnb <- gnotebook(container=WINGRAPH)
ggraph <- ggraphics(container=gnb)
ggplot(cars, aes(x=speed, y=dist)) + geom_point()
它给出了:
Error in UseMethod("depth") :
no applicable method for 'depth' applied to an object of class "NULL"
但是,如果我首先在图形笔记本中显示图像文件,这样可以正常工作:
gnb <- gnotebook(container=WINGRAPH)
gimage("plot1.png", container=gnb)
ggraph <- ggraphics(container=gnb)
ggplot(cars, aes(x=speed, y=dist)) + geom_point()
在第一段代码中,如果我使用经典的情节而不是ggplot(例如plot(0,0)
),我会得到:
Error in plot.new() : figure margins too large
我已经尝试了给this question的答案但是没有用。
答案 0 :(得分:2)
在绘图之前将visible
设置为FALSE:
library(gWidgets2RGtk2)
library(cairoDevice)
w <- gwindow("notebook example")
nb <- gnotebook(cont=w)
gg <- ggraphics(cont=nb, label='1',visible=FALSE)
library(ggplot2)
ggplot(cars, aes(x=speed, y=dist)) + geom_point()
visible(gg) <- TRUE
<强> EIDT 强>
w <- gwindow("notebook example")
nb <- gnotebook(cont=w)
devs <- lapply(1:2, function(i)
ggraphics(cont=nb,visible=FALSE, label=as.character(i)))
addHandlerChanged(nb, handler=function(h,...) {
gg <- h$obj[h$page.no]
visible(gg) <- TRUE
if(h$page.no =="1")
print(ggplot(cars, aes(x=speed, y=dist)) + geom_point())
else plot(0)
})