2

これが私の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

この質問に対する回答を試しましたが、うまくいきませんでした。

4

1 に答える 1

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)
})
于 2013-12-09T19:30:22.087 に答える