Upload
emile
View
73
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
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 NetworkRelated 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 descriptionade4TkGUI 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 descriptionmigui 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 descriptionResearchMethods 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 descriptionCommon 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!