2012-11-07 2 views
4

Я пытаюсь сделать очень простой графический интерфейс для моего скрипта. В двух словах проблема выглядит так:Создание простого R GUI с пакетом tcltk

dataset - это dataframe, я хотел бы построить один столбец как время и использовать простой графический интерфейс для выбора столбца next/previus.

dataset <-data.frame(rnorm(10), rnorm(10), rnorm(10))

columnPlot <- function(dataset, i){

plot(dataset[, i])

}

как использовать tcltk для вызова fplot с различными i-х?

ответ

8

Не то, о чем вы просили (не tcltk), но я бы посоветовал вам взглянуть на новый пакет shiny от RStudio.

+0

это не 'tcltk' связаны, я ищу решение – Qbik

+0

«базовой»Вот ссылка на блоге я просто смирился сегодня о том, чтобы подобный простой графический интерфейс. Он использует GTK, а не tcltk, но проверьте его. Вы можете использовать 'gWidgets' (пакет, который я использовал), чтобы делать вещи в tcltk. http://r-norberg.blogspot.com/2012/11/my-first-r-gui.html – rnorberg

3

Вы особенно привязаны к идее использования tcltk? Я работал над чем-то похожим с помощью пакета gWidgets и имел некоторый успех. Согласно сайту CRAN, «gWidgets предоставляет API-интерфейс, не зависящий от инструментария для создания интерактивных графических интерфейсов». Этот пакет использует tcltk или GTK2, и я использовал часть GTK2. Вот краткий пример графического интерфейса с помощью кнопки для изменения i. Я также добавил немного фантазии к вашей функции, потому что вы упомянули, что будете строить временные ряды, поэтому я сделал x ось Time.

data<-data.frame(rnorm(11),rnorm(11),rnorm(11)) 

i = 1 

fplot <- function(i, data = data){ 
    library(ggplot2) 
    TimeStart <- as.Date('1/1/2012', format = '%m/%d/%Y') 
    plotdat <- data.frame(Value = data[ ,i], Time = seq(TimeStart,TimeStart + nrow(data) - 1, by = 1)) 
    myplot <- ggplot(plotdat, aes(x = Time, y = Value))+ 
    geom_line() 
    print(myplot) 
} 

library(gWidgets) 
options(guiToolkit = 'RGtk2') 

window <- gwindow ("Time Series Plots", visible = T) 
notebook <- gnotebook (cont = window) 
group1 <- ggroup(cont = notebook, label = "Choose i", horizontal=F) 
ichooser <- gspinbutton(cont = group1, from = 1, to = ncol(data), by = 1, value = i, handler = function(h,...){ 
    i <<- svalue(h$obj)}) 
plotbutton <- gbutton('Plot', cont = group1, handler=function(h,...){ 
    fplot(i, data)}) 
graphicspane1 <- ggraphics(cont = group1) 

 Смежные вопросы

  • Нет связанных вопросов^_^