An Introduction to GUI Programming Using R
-
Upload
vsuarezf2732 -
Category
Documents
-
view
29 -
download
3
description
Transcript of An Introduction to GUI Programming Using R
An Introduction to GUI Development using R
Overview
• Introduction– R Interfaces– GUIs for programming
• Programming for GUIs– GUIs for teaching how to program– GUI task-oriented applications– gWidgets package
• Integrating R into other applications– GUI deployment
IntroductionR Interfaces/Console alternatives
• RStudio – Programmed in C++ and GTK+
• JGR– Java
• Revolution R Productivity Environment (RPE)– MS Visual Studio
• Red-R (Open Source visual programming for R
• SciViews (extends Komodo edit)
GUIs for Programming (code editors)• R internal editor (on Mac!)
• Emacs + ESS
• Eclipse + StatET
• Gvim/Vim-R
• Notepad++ / NppToR
• WinEdt/RWniEdt ($30!!!)
• Tinn-R (MS Windows only)
• jEdit (doesn't pass code to R)
GUIs to learn programming
• R Commander (Rcmdr package)– Satistical analysis functions
• RKWard (Linux only)
Poll from KDnuggets.com (data miners!)
GUI Programming using R• gWidgets package
– written by J. Verzani
– “gWidgets provides a toolkit-independent API for building interactive GUIs.”
– At least one of gWidgetstcltk, gWidgetsRGtk2, gWidgetsQt (on R-Forge only) and qWidgetsrJava needs to be installed.”
– i.e. GUI toolkits must be installed (except Tcltk, pre-installed, default)
– the user can switch between GUI toolkits with relative ease and can write code in a toolkit independent way
• Well, not quite
GTK+ toolkit
• www.gtk.org
gWidgetsfunctions
GUI contruction using gWidgets
• Use containers (in ggroup, gwindow, gnotebook functions) to nest widgets• Handlers i.e. event handling, define the executed operation• Handlers can be added after the GUI is created e.g. addHandlerClicked(…)• Drag-and-drop is also featured in gWidgets
• Demo....
library(gWidgets)options("guiToolkit"="RGtk2")
win <- gwindow("Hello World, ad nauseum", visible=TRUE)group <- ggroup(horizontal = FALSE, container=win)
obj <- gbutton("Hello...",container=group, handler = function(h,...) gmessage("world"))
obj <- glabel("Hello...", container =group,handler = function(h,...) gmessage("world"))
obj <- gcombobox(c("Hello","world"), container=group)obj <- gedit("Hello world", container=group)obj <- gtext("Hello world", container=group, font.attr=list(style="bold"))
Sample Problem• Survey conducted to see changes in HIV and
non-HIV services in sub-Saharan Africa– Conducted across health centres & hospitals, also
individual health-worker data, in several sub-saharan Africa countries
• Relatively small questionnaire resulting in 800 variables!– Variables names themselves are not very useful
• e.g. “Q001”. Great scope for programming error
– Variable labels (the actual questions) contain the information on what is collected
– With the concept of variable names dropped, an interactive GUI might work better with variable labels than programming!
Solution• Create new sets of labels
– which work as indexes– These can be used to filter, manage and
analyze data
- Restructuring of data not required
• Begin with a search & replace dialogue screen– How would you design it (so that it would be
a better option than just using grep or regexpr)?
• Demo...
Deducer
• “An intuitive, cross-platform graphical data analysis system”
• Deducer is based upon rJava and provides access to the Java Swing Network
Related Packages Description
DeducerExtras Additional dialogs and functions for Deducer
DeducerPlugIn Example Deducer Plug-in Example
DeducerPlugInScaling Reliability and factor analysis plugin
DeducerSpatial Deducer for spatial data analysis
DeducerSurvival Add Survival Dialogue to Deducer
DeducerText Deducer GUI for Text Data
gWidgets versus Deducer
• Deducer has a slightly lower level library, but more flexible and compatible with JGR
• Deducer requires you to explicitly specify positions of widgets, and is a little more verbose when you come to add event handling logic
• Visit www.r-bloggers.com for a discussion
Other R GUI packages and tools (which I know little about!)
• PBS (Pacific Biological Station) packages
• Rattle (data mining GUI)
• Brodgar (used for class-room teaching etc.)
• pmg (poor man’s GUI, similar to Rcmdr)
Current List of Packages with tools for GUI development or utilize a programmed GUI*
*as of January 2013
Package description
ade4TkGUI GUI for ade4 package
AtelieR Basic statistical inference & bayesian analysis
BiodiversityR Biodiversity, suitability, community ecology analysis
biOpsGUI Basic image operations
BiplotGUI Interactive Biplots in R
CADStat Statistical methods useful for causal assessment
caGUI A Tcl/Tk GUI for the functions in the ca package
cncaGUI Canonical Non-symmetrical Correspondence Analysis
DALY Stochastic DALY calculations
detrendeR Start the detrendeR Graphical User Interface (GUI)
digeR GUI tool for analyzing 2D DIGE data
GGEBiplotGUI GGEBiplotGUI: Interactive GGE Biplots in R
GrapheR Multi-platform GUI for drawing customizable graphs
MDSGUI A GUI for interactive MDS in R
MergeGUI A GUI for Merging Datasets in R
Metabonomic GUI for Metabonomic Analysis
Package description
migui Graphical User Interface of the mi Package
MissingDataGUI A GUI for Missing Data Exploration
MSeasyTkGUI A GUI for Missing Data Exploration
multibiplotGUI Multibiplot Analysis in R
mutossGUI A graphical user interface for the MuToss Project
PBSadmb ADMB for R Using Scripts or GUI
PMSddesolve Solver for Delay Differential Equations
PBSmapping Mapping Fisheries Data and Spatial Analysis Tools
PBSmodelling Interact with Models, Explore Data, Dynamic Presentations
playwith A GUI for interactive plots using GTK+
pmg Poor Man's GUI
ProgGUIinR book "Programming Graphical User Interfaces in R"
QCAGUI QCA Graphical User Interface
R2STATS Fit and compare GLM and GLMM in R
RandForestGUI Random Forests
RenextGUI GUI for Renext
Package description
ResearchMethods GUIs to help teach statistics to non-statistics students
reshapeGUI A GUI for the reshape2 and plyr packages
RPMG Interactive R analysis sessions
RunuranGUI A GUI for the UNU.RAN random variate generators
Rz GUI Tool for Data Management like SPSS or Stata
sculpt3d A simple toolbar GUI for brushing RGL plots
sdcMicroGUI Graphical user interface for package sdcMicro
SeqGrapheR Graph based visualization of cluster of DNA seq reads
Sim.DiffProcGUI Simulation of Diffusion Processes
speedR A GUI based importing and filtering tool
TGUICore Teaching GUI - Core functionality
TGUITeaching Teaching GUI - prototype
tourrGUI A Tour GUI using gWidgets
traitr creating GUIs (traits UI module for python)
WMCapacity Bayesian working memory models
x12GUI X12 - Graphical User Interface
Package description
Common JavaJars Useful libraries for building a Java based GUI
fgui Function GUI
miniGUI tktcl quick and simple function GUI
Considerations in GUI development & deployment• Which Widget library?
– GTK+, Java, Qt?
• Program the UI or use a UI designer? – e.g. QtDesigner
• Choice of software for GUI deployment?– R (gWidgets package etc.)– Python (wxPython, PyQt, PyQt4 libraries)
• R/Python integration (call R using Rpy, Rpy2)
– Sage (www.sagemath.org)?• Sage uses existing open-source libraries wherever they exist! • See sagemath.org, writen in Python & Cython, not supported by
MS Windows
Web-applications
• rApache project (www.rapache.net)– Embed R in the Apache web server
• Rook package– Provides an interface to build web-
applications with rApache
• gWidgetsWWW– It’s independent of gWidgets!– Use JavaScript libraries, rapache
• Shiny in Rstudio!!!
Documentation
• Lots of material on the web
• Journal of Statistical Software (Vol. 49)– Special issue of R on GUIs
• Lawrence and Verzani book (2012)
• gWidgets package vignette
Final comments
• Don’t write a GUI which you hope others will find useful. Write one you use yourself and hopefully it may be of use other people
• A successful GUI will requires the right balance of detail and simplicity
• Writing a GUI using R may not be the optimal deployment of a GUI, but it is nevertheless easy to do!– “It is my opinion that programing from within R is a very good
way to get a working GUI quickly, but you are better served leaving R for something polished and professional looking.” R-Blogger
Thank you!