График к определенному графику в окне составного графика?

Если я создаю окно мультиграфика с par(mfrow=...), действительно ли возможно отправить данные в определенный график (т.е. "тот в левом нижнем углу"), или графическое изображение всегда обязательно последовательно? Существует ли пакет для R, который делает что-то вроде этого?

Для тех, которым интересно, эта проблема проистекает из того, что R является однопоточным приложением и не идеален для визуализации в реальном времени. У меня есть несколько потоков данных реального времени, входящих R из внешнего источника, который производит данные асинхронно (и поэтому потоки данных не всегда существуют того же порядка). Это приводит к R, зеркально отражающему вокруг порядка графиков визуализации данных каждый раз, когда он обновляет.

9
задан rcs 6 May 2013 в 07:08
поделиться

3 ответа

Вы можете использовать split.screen () :

par(bg = "white") # erase.screen() will appear not to work
                  # if the background color is transparent 
                  # (as it is by default on most devices).
split.screen(c(2,1)) # split display into two screens
split.screen(c(1,3), screen = 2) # now split the bottom half into 3
screen(1) # prepare screen 1 for output
plot(10:1)
screen(4) # prepare screen 4 for output
plot(10:1)
11
ответ дан 4 December 2019 в 12:16
поделиться

Другой вариант - реализовать небольшой графический интерфейс, например с RGtk2 или RTclTk .

Обычно я делаю это для графиков, которые хочу изменить в реальном времени, и это отлично работает.

Например, с RGtk2 и cairoDevice вы можете просто сделать что-то вроде (я предполагаю, что у вас есть интерфейс Glade)

# Helper function to get a widget from the Glade interface
getWidget <- function(name)
 {
 return (interface$getWidget(name))
 }

interface <- gladeXMLNew("interface.glade", root="mainWindow")
# Our cairo devices (to draw graphics).
# plot1, plot2, and plot3 are GtkDrawingArea widgets 
asCairoDevice(getWidget("plot1"))
# dev.cur() will give the device number of the last device we created
# You'll use this to switch device when you draw in different plots
# Storing the device number is important because you may have other
# devices open from other unrelated plots 
# (so never assume they'll just start from 1 and be sequential!!!)
plot1.dev <- as.integer(dev.cur())
asCairoDevice(getWidget("plot2"))
plot2.dev <- as.integer(dev.cur())
asCairoDevice(getWidget("plot3"))
plot3.dev <- as.integer(dev.cur())

# To draw in a specific plot you just do
dev.set(plot2.dev)
plot(....)

У этого есть много других преимуществ, например, возможность легко размещать графики в любом месте (с помощью Glade Interface Designer) и иметь возможность взаимодействия с пользователем с помощью определенных кнопок (например, у вас может быть кнопка «приостановить получение»).

1
ответ дан 4 December 2019 в 12:16
поделиться

Взгляните на справку (макет) . Это позволяет указать, что, где и в каких размерах.

После того, как сюжет был составлен, я не думаю, что вы переделываете сюжет лишь частично. Но вы можете использовать dev.set () и др. Для переключения между различными «устройствами построения графиков» (например, окнами); см. справку (список разработчиков) .

3
ответ дан 4 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: