我用一个按钮制作了一个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的窗口中。
有谁能说明为什么会这样?
答案 0 :(得分:0)
它从R-console而不是函数运行的原因是如果没有其他说明,R-console将自动调用print()
。在函数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)))