Getting Started with canvasXpress in R

Isaac Neuhaus

2018-08-16

Overview

canvasXpress was developed as the core visualization component for bioinformatics and systems biology analysis at Bristol-Myers Squibb. It supports a large number of visualizations to display scientific and non-scientific data. canvasXpress also includes a simple and unobtrusive user interface to explore complex data sets, a sophisticated and unique mechanism to keep track of all user customization for Reproducible Research purposes, as well as an ‘out of the box’ broadcasting capability to synchronize selected data points in all canvasXpress plots in a page. Data can be easily sorted, grouped, transposed, transformed or clustered dynamically. The fully customizable mouse events as well as the zooming, panning and drag’n drop capabilities are features that make this library unique in its class.

canvasXpress can now be used within R at the console to generate conventional plots in R-Studio or seamlessly embeded in Shiny web applications. Full-fledged examples of the canvasXpress library usage in shiny including mouse events, zooming, and broadcasting capabilities, are included in this package in the shiny directory. This canvasXpress R library was created with the htmlwidgets package.

Examples

Scatter 3D Plot

y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
               
canvasXpress(data      = y,
             varAnnot  = z,
             colorBy   = "Species",
             ellipseBy = "Species",
             graphType = "Scatter3D",
             title     = "Iris Data Set",
             xAxis     = list("Sepal.Length"),
             yAxis     = list("Petal.Width"),
             zAxis     = list("Petal.Length"))
Scatter3D

Scatter3D

Scatter 2D Matrix Plot

y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
                   
canvasXpress(data              = y,
             varAnnot          = z,
             graphType         = "Scatter2D",
             scatterPlotMatrix = TRUE,
             colorBy           = "Species",
             showTransition    = TRUE)
Scatter2DMatrix

Scatter2DMatrix

Boxplot

y <- read.table("http://www.canvasxpress.org/data/cX-iris-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
x <- read.table("http://www.canvasxpress.org/data/cX-iris-smp.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
                
canvasXpress(data              = y,
             smpAnnot          = x,
             graphType         = "Boxplot",
             graphOrientation  = "vertical",
             title             = "Iris flower data set",
             smpTitle          = "Species",
             smpLabelFontStyle = "italic",
             smpLabelRotate    = 90,
             xAxis2Show        = FALSE,
             afterRender       = list(list("groupSamples", list("Species"))))
Boxplot

Boxplot

Heatmap

y  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat.txt",
                 header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, 
                 check.names=FALSE, stringsAsFactors=FALSE)
y2 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat2.txt",
                 header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, 
                    check.names=FALSE, stringsAsFactors=FALSE)
y3 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat3.txt",
                 header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, 
                 check.names=FALSE, stringsAsFactors=FALSE)
y4 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat4.txt",
                 header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, 
                 check.names=FALSE, stringsAsFactors=FALSE)
x  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-smp.txt",
                 header=TRUE, sep= "\t", quote="", row.names=1, fill=TRUE, 
                 check.names=FALSE, stringsAsFactors=FALSE)
z  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-var.txt",
                 header=TRUE, sep= "\t", quote="", row.names=1, fill=TRUE, 
                 check.names=FALSE, stringsAsFactors=FALSE)

canvasXpress(data          = list(y = y, data2 = y2, data3 = y3, data4 = y4),
             smpAnnot      = x,
             varAnnot      = z,
             graphType     = "Heatmap",
             guides        = TRUE,
             outlineBy     = "Outline",
             outlineByData = "data2",
             shapeBy       = "Shape",
             shapeByData   = "data3",
             sizeBy        = "Size",
             sizeByData    = "data4")
Heatmap

Heatmap

Four-way Venn Diagram

canvasXpress(vennData   = data.frame(AC=456, A=340, ABC=552, ABCD=148, BC=915,
                                     ACD=298, BCD=613, B=562, CD=143, ABD=578, 
                                     C=620, D=592, AB=639, BD=354, AD=257),
             graphType  = "Venn",
             vennLegend = list(A="List 1", D="List 4", C="List 3", B="List 2"),
             vennGroups = 4)
Venn

Venn

Additional Information

For the use of canvasXpress plots in shiny there are interactive examples available through the package function cxShinyExample

#List example names
cxShinyExample()

#Run an interactive shiny example
cxShinyExample(example = "example1")

There is also a wealth of additional information including full API documentation and extensive R and Javascript examples at http://canvasxpress.org.