【问题标题】:Making simple R GUI with tcltk package使用 tcltk 包制作简单的 R GUI
【发布时间】:2012-11-07 00:01:55
【问题描述】:

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

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

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

columnPlot <- function(dataset, i){

plot(dataset[, i])

}

如何使用tcltk 用不同的i 调用fplot

【问题讨论】:

    标签: r function user-interface rgui


    【解决方案1】:

    不是你要求的(不是tcltkrelated),但我建议你看看 RStudio 的新 shiny 包。

    【讨论】:

    • 它与tcltk 无关,我正在寻找“基础”解决方案
    • 这是我今天刚刚发布的关于制作类似简单 GUI 的博客文章的链接。它使用 GTK 而不是 tcltk,但请检查一下。您也可以使用gWidgets(我使用的包)在 tcltk 中执行操作。 r-norberg.blogspot.com/2012/11/my-first-r-gui.html
    【解决方案2】:

    您是否特别喜欢使用 tcltk 的想法?我一直在使用gWidgets 包进行类似的工作,并取得了一些成功。根据它的 CRAN 网站,“gWidgets 提供了一个独立于工具包的 API,用于构建交互式 GUI”。这个包使用 tcltk 或 GTK2,我一直在使用 GTK2 部分。这是一个带有用于更改i 的旋转按钮的GUI 的快速示例。我还为您的函数添加了一点花哨,因为您提到您将绘制时间序列,所以我将 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2015-09-23
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多