combineWidgets {manipulateWidget} | R Documentation |
Combine several interactive plots
Description
This function combines different htmlwidgets in a unique view.
Usage
combineWidgets(
...,
list = NULL,
nrow = NULL,
ncol = NULL,
title = NULL,
rowsize = 1,
colsize = 1,
byrow = TRUE,
titleCSS = "",
header = NULL,
footer = NULL,
leftCol = NULL,
rightCol = NULL,
width = NULL,
height = NULL
)
Arguments
... |
htmlwidgets to combine. If this list contains objects that are not htmlwidgets, the function tries to convert them into a character string which is interpreted as html content. |
list |
Instead of directly passing htmlwidgets to the function, one can
pass a list of htmlwidgets and objects coercible to character. In particular,
it can be usefull if multiple htmlwidgets have been generated using a loop
function like |
nrow |
Number of rows of the layout. If |
ncol |
Number of columns of the layout.If |
title |
Title of the view. |
rowsize |
This argument controls the relative size of each row. For
instance, if the layout has two rows and |
colsize |
Same as rowsize but for the height of the columns of the layout. |
byrow |
If |
titleCSS |
A character containing css properties to modify the appearance of the title of the view. |
header |
Content to display between the title and the combined widgets. It can be a single character string or html tags. |
footer |
Content to display under the combined widgets. It can be a single character string or html tags. |
leftCol |
Content to display on the left of the combined widgets. It can be a single character string or html tags. |
rightCol |
Content to display on the right the combined widgets. It can be a single character string or html tags. |
width |
Total width of the layout (optional, defaults to automatic sizing). |
height |
Total height of the layout (optional, defaults to automatic sizing). |
Details
The function only allows table like layout : each row has the same number of columns and reciprocally. But it is possible to create more complex layout by nesting combined htmlwidgets. (see examples)
Value
A htmlwidget object of class combineWidget
. Individual widgets
are stored in element widgets
and can be extracted or updated. This
is useful when a function returns a combineWidgets
object but user
wants to keep only one widget or to update one of them (see examples).
Examples
if (require(plotly)) {
data(iris)
combineWidgets(title = "The Iris dataset",
plot_ly(iris, x = ~Sepal.Length, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Sepal.Width, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Petal.Length, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Petal.Width, type = "histogram", nbinsx = 20)
)
# Create a more complex layout by nesting combinedWidgets
combineWidgets(title = "The iris data set: sepals", ncol = 2, colsize = c(2,1),
plot_ly(iris, x = ~Sepal.Length, y = ~Sepal.Width, type = "scatter",
mode = "markers", color = ~Species),
combineWidgets(
plot_ly(iris, x = ~Sepal.Length, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Sepal.Width, type = "histogram", nbinsx = 20)
)
)
# combineWidgets can also be used on a single widget to easily add to it a
# title and a footer.
require(shiny)
comments <- tags$div(
"Wow this plot is so ",
tags$span("amazing!!", style = "color:red;font-size:36px")
)
combineWidgets(
plot_ly(iris, x = ~Sepal.Length, type = "histogram", nbinsx = 20),
title = "Distribution of Sepal Length",
footer = comments
)
# It is also possible to combine htmlwidgets with text or other html elements
myComment <- tags$div(
style="height:100%;background-color:#eee;padding:10px;box-sizing:border-box",
tags$h2("Comment"),
tags$hr(),
"Here is a very clever comment about the awesome graphics you just saw."
)
combineWidgets(
plot_ly(iris, x = ~Sepal.Length, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Sepal.Width, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Petal.Length, type = "histogram", nbinsx = 20),
myComment
)
# Updating individual widgets.
myWidget <- combineWidgets(
plot_ly(iris, x = ~Sepal.Length, type = "histogram", nbinsx = 20),
plot_ly(iris, x = ~Sepal.Width, type = "histogram", nbinsx = 20),
ncol = 2
)
myWidget
myWidget$widgets[[1]] <- myWidget$widgets[[1]] %>%
layout(title = "Histogram of Sepal Length")
myWidget$widgets[[2]] <- myWidget$widgets[[2]] %>%
layout(title = "Histogram of Sepal Width")
myWidget
# Instead of passing directly htmlwidgets to the function, one can pass
# a list containing htmlwidgets. This is especially useful when the widgets
# are generated using a loop function like "lapply" or "replicate".
#
# The following code generates a list of 12 histograms and use combineWidgets
# to display them.
samples <- replicate(12, plot_ly(x = rnorm(100), type = "histogram", nbinsx = 20),
simplify = FALSE)
combineWidgets(list = samples, title = "12 samples of the same distribution")
}