我正在尝试为我的脚本制作非常简单的 GUI。简而言之,问题看起来像这样:
dataset
是数据框,我想将一列绘制为时间,并使用简单的 GUI 来选择下一列/上一列。
dataset <-data.frame(rnorm(10), rnorm(10), rnorm(10))
columnPlot <- function(dataset, i){
plot(dataset[, i])
}
如何使用不同的tcltk
通话?fplot
i
我正在尝试为我的脚本制作非常简单的 GUI。简而言之,问题看起来像这样:
dataset
是数据框,我想将一列绘制为时间,并使用简单的 GUI 来选择下一列/上一列。
dataset <-data.frame(rnorm(10), rnorm(10), rnorm(10))
columnPlot <- function(dataset, i){
plot(dataset[, i])
}
如何使用不同的tcltk
通话?fplot
i
不是你要求的(不tcltk
相关),但我建议你看看shiny
RStudio 的新包。
您是否特别喜欢使用 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)