使用tcltk包制作简单的R GUI

时间:2012-11-07 00:01:55

标签: r function user-interface rgui

我正在尝试为我的脚本制作非常简单的GUI。简而言之问题看起来像这样:

dataset是数据框,我想将一列作为时间,并使用简单的GUI来选择next / previus列。

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

columnPlot <- function(dataset, i){

plot(dataset[, i])

}

如何使用tcltk来调用fploti不同的内容?

2 个答案:

答案 0 :(得分:8)

不是您要求的(不是tcltk相关的),但我建议您查看来自RStudio的新shiny包。

答案 1 :(得分:3)

您是否特别关注使用tcltk的想法?我一直在使用gWidgets包来做类似的事情并取得了一些成功。根据它的CRAN网站,“gWidgets提供了一个独立于工具包的API,用于构建交互式GUI”。这个包使用tcltk或GTK2,我一直在使用GTK2部分。这是一个带有旋钮的GUI的快速示例,用于更改i。我还为你的功能添加了一点功能,因为你提到你会绘制时间序列,所以我把x轴设为时间。

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)