0

我用一个按钮制作了一个 gui,它的处理程序执行我制作的一个类的绘图方法,它在正常的 R 会话中使用 ggplot2 和 grid/gridExtra 来组合绘图。使用控制台中的 plot() 函数可以正常工作。我的按钮/处理程序如下:

Plotbutton <- gbutton("Plot!", container=MainWindow,
                  handler=function(h,...){
                    plot(analysis, linesplot=svalue(linecheck), lineplot.legend=svalue(linelegcheck), baseannotate=svalue(bpcheck), bpfreq=as.numeric(svalue(bpspin)), mosaic.bars=svalue(mosaiccheck), mosaic.scale=as.numeric(svalue(mosaicspin)), combine.plots=svalue(combinecheck), condense.mosaics=svalue(condensecheck), labfontsize=as.numeric(svalue(fontspin1)), legfontsize=as.numeric(svalue(fontspin2)))
                  })

我不确定原因,但是加载 gWidgets、gWidgetstcltk 和我的绘图方法所需的包,然后单击按钮,没有任何内容被绘制到 R 图形环境中,但是在 RStudio 中,绘图面板直到GUI 已退出。该图形确实出现在普通 Windows RGui 的窗口中。

谁能建议为什么会这样?

4

1 回答 1

0

它从 R 控制台而不是函数工作的原因是,print()如果没有其他说明,R 控制台将自动调用。在函数内 R 不这样做,所以如果你想打印一个图形,你必须明确声明print(graph). 尝试

print(plot(analysis, linesplot=svalue(linecheck), lineplot.legend=svalue(linelegcheck), baseannotate=svalue(bpcheck), bpfreq=as.numeric(svalue(bpspin)), mosaic.bars=svalue(mosaiccheck), mosaic.scale=as.numeric(svalue(mosaicspin)), combine.plots=svalue(combinecheck), condense.mosaics=svalue(condensecheck), labfontsize=as.numeric(svalue(fontspin1)), legfontsize=as.numeric(svalue(fontspin2)))
于 2013-04-26T17:29:00.317 回答