2013-03-21 3 views
0

Я сделал gui с кнопкой, обработчик которой выполняет метод построения класса I, он использует ggplot2 и grid/gridExtra в обычной сессии R, чтобы собрать график. Он отлично работает, используя функцию plot() в консоли. Моя кнопка/обработчик ниже:Построение с gWidgetstcltk

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

Я думаю, вам нужно напечатать (...) звонок. Может быть также связано с обработкой событий с tcltk и RStudio, но будем надеяться, что это не так. – jverzani

ответ

0

Причина, по которой это работает с R-консоли, а не от функции, заключается в том, что R-консоль автоматически вызовет 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)))