4

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

dataset是数据框,我想将一列绘制为时间,并使用简单的 GUI 来选择下一列/上一列。

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

columnPlot <- function(dataset, i){

plot(dataset[, i])

}

如何使用不同的tcltk通话?fploti

4

2 回答 2

8

不是你要求的(不tcltk相关),但我建议你看看shinyRStudio 的新包。

于 2012-11-09T22:41:32.713 回答
3

您是否特别喜欢使用 tcltk 的想法?我一直在使用该gWidgets软件包进行类似的工作,并取得了一些成功。根据它的 CRAN 站点,“gWidgets 提供了一个独立于工具包的 API,用于构建交互式 GUI”。这个包使用 tcltk 或 GTK2,我一直在使用 GTK2 部分。这是一个带有用于更改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)
于 2012-11-14T16:55:32.217 回答