gWidgets: точки не отображаются на втором экране

Я использую gWidgets в R. Я хотел бы, чтобы два графика отображались рядом после того, как я разделил экран. Я не могу понять, почему на втором экране не отображаются точки данных.

library(gWidgets)
win <- gwindow("Graphics example")  # Create a window.
# You will be prompted to select a GUI toolkit.
# Enter "1" for gWidgetsRGtk2
ggraphics(ps=6, container=win)
split.screen(c(1,2))  # Split screen into 2 halves
screen(1)
plot(c(1:10), rnorm(10))
screen(2)
plot(c(1:10), rnorm(10))

Вы должны увидеть, что появляется второй график, но он не содержит точек данных. Я использую 32-битную версию R 2.13.2 на ноутбуке с 32-битной Windows. Любая помощь в этом очень ценится. Спасибо.


person Anto    schedule 27.11.2012    source источник
comment
Я попробовал на своей машине Linux с RGtk2 и для вашего кода получил сообщение об ошибке Error in plot.new() : figure margins too large. Методом проб и ошибок я обнаружил, что ggraphics(dpi = 150, ps=6, container=win) отображает то, что, как я думаю, вы хотите. На самом деле это не ответ, но если это поможет...   -  person vaettchen    schedule 27.11.2012
comment
Ваше здоровье. К сожалению, это мало что дало мне. Кроме того, обновление моего вопроса. Используйте строку options(guiToolkit = "RGtk2"), чтобы вам не предлагали выбрать инструментарий GUI.   -  person Anto    schedule 27.11.2012


Ответы (2)


Это проблема обновления графики. Я думаю, что лучше поместить его в ggroup.

Например, вы можете сделать это:

library(gWidgets)
options(guiToolkit="RGtk2") ## "Qt"
w <- gwindow("brush example", visible=FALSE)
g <- ggroup(container=w)
## I create 2 ggraphics , the container is ggroup
gg <- ggraphics(container=g)
gg1 <- ggraphics(container=g)
visible(w) <- TRUE
## Here we create 2 handlers to refresh the plot on the click
## See documentation of gWidgets for other handler
ID <- addHandlerChanged(gg, handler=function(h,...) {
  ## udpate graphic and data frame
  plot(c(1:10), rnorm(10))

})

ID1 <- addHandlerChanged(gg1, handler=function(h,...) {
  ## udpate graphic and data frame
  plot(c(1:10), rnorm(10))

})

введите здесь описание изображения

person agstudy    schedule 27.11.2012
comment
ggroup может быть правильным ответом, потому что ваш код определенно работает. Благодарю вас! - person Anto; 28.11.2012
comment
Спасибо! это зависит от того, хотите ли вы вручную разместить свой сюжет или делегировать его в ggroup. - person agstudy; 28.11.2012

Это также может быть связано с тем, что окну не выделяется достаточно места для размещения графики. Чтобы этого избежать, попробуйте передать visible=FALSE в конструктор gwindow и после добавления всех компонентов показать окно с visible(win) <- TRUE

person jverzani    schedule 27.11.2012
comment
Полезная проверка. Спасибо, но здесь происходит много других вещей. Я просто взял небольшой фрагмент кода, чтобы продемонстрировать свою проблему. - person Anto; 28.11.2012