Title: | Pick Data Points from a Deck.gl Scatterplot |
Version: | 0.2.6 |
Description: | Performant interactive scatterplot for ~ 1 million points. Zoom, pan, and pick points. Includes tooltips, labels, a grid overlay, legend, and coupled interactions across multiple plots. |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
RoxygenNote: | 7.1.2 |
URL: | https://github.com/hms-dbmi/picker |
BugReports: | https://github.com/hms-dbmi/picker/issues |
Imports: | htmlwidgets (≥ 1.5.3) |
Suggests: | shiny, scales |
Depends: | R (≥ 4.0) |
NeedsCompilation: | no |
Packaged: | 2022-03-30 17:26:11 UTC; alex |
Author: | Alex Pickering [aut, cre] |
Maintainer: | Alex Pickering <alexvpickering@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2022-03-31 07:30:07 UTC |
Render a Picker Widget
Description
Render a Picker Widget
Usage
picker(
coords,
colors,
labels,
title = NULL,
label_coords = NULL,
polygons = NULL,
point_color_polygons = NULL,
show_controls = TRUE,
grid_legend_items = NULL,
scale_legend_props = NULL,
scatter_props = NULL,
deck_props = NULL,
text_props = NULL,
polygon_props = NULL,
xrange = NULL,
yrange = NULL,
xaxs = 0.04,
yaxs = 0.04,
width = NULL,
height = NULL,
elementId = NULL
)
Arguments
coords |
data.frame with two columns. First has x, second has y coordinates. |
colors |
vector of hex colors, one for each row of |
labels |
vector of point labels used for tooltips on hover. |
title |
character string to show in top left of plot. |
label_coords |
data.frame with three columns 'x', 'y', and 'label'. Used for text layer. |
polygons |
data.frame containing at minimum columns 'x1', 'x2', 'y1', 'y2', that define the polygons to draw and 'color' that defines the color. |
point_color_polygons |
character, a color to make points when polygons are shown e.g. |
show_controls |
Should control panel be shown? Default is |
grid_legend_items |
list of lists with |
scale_legend_props |
optional props to render a gradient scale legend.
For example: |
scatter_props |
Props passed to deck.gl ScatterplotLayer. |
deck_props |
Props passed to deck.gl Deck instance. |
text_props |
Props passed to deck.gl TextLayer. |
polygon_props |
Props passed to deck.gl PolygonLayer. |
xrange |
range of x-values. Default is |
yrange |
range of y-values. Default is |
xaxs |
the fraction to extend |
yaxs |
the fraction to extend |
width |
width of htmlwidget. |
height |
height of htmlwidget. |
elementId |
id of htmlwidget. |
Value
renders html widget
Examples
if (interactive()) {
library(shiny)
library(picker)
# load example data
load(system.file('extdata/pbmcs.rda', package = 'picker'))
# setup gradient scale legend
scale_legend_props <- list(
colorHigh = 'blue',
colorLow = '#f5f5f5',
high = round(max(exp)),
low = min(exp))
text_props <- list()
# get colors for gene expression
exp <- scales::rescale(exp, c(0, 1))
expression_colors <- scales::seq_gradient_pal('#f5f5f5', 'blue')(exp)
# legend to show when grid is visible
grid_legend_items = list(
list(color = '#FF0000', label = '\U2191'),
list(color = '#0000FF', label = '\U2193'),
list(color = '#989898', label = 'p \U003C .05'),
list(color = '#EAEAEA', label = 'p \U2265 .05')
)
ui = shinyUI(fluidPage(
tags$head(tags$style(".picker {border: 1px solid #ddd; margin: 20px 0;}")),
shiny::column(
width = 6,
pickerOutput('clusters', width = '100%', height = '400px'),
pickerOutput('expression', width = '100%', height = '400px'),
verbatimTextOutput('selected')
)
))
server = function(input, output) {
# show selected output
output$selected <- renderPrint({
input$clusters_selected_points
})
# coordinate views (zoom/pan)
clusters_proxy <- picker_proxy('clusters')
observeEvent(input$expression_view_state, {
update_picker(clusters_proxy, input$expression_view_state)
})
expression_proxy <- picker_proxy('expression')
observeEvent(input$clusters_view_state, {
update_picker(expression_proxy, input$clusters_view_state)
})
# change title between grid/scatterplot
observeEvent(input$clusters_show_grid, {
title <- ifelse(input$clusters_show_grid, '\U0394 CELLS', '')
update_picker(clusters_proxy, title = title)
})
# render pickers
output$clusters <- renderPicker(
picker(
coords,
cluster_colors,
labels,
label_coords = label_coords,
polygons = polygons,
text_props = text_props,
point_color_polygons = 'white',
grid_legend_items = grid_legend_items)
)
output$expression <- renderPicker(
picker(coords,
expression_colors,
labels,
show_controls = FALSE,
scale_legend_props = scale_legend_props)
)
}
shinyApp(ui = ui, server = server, options = list(launch.browser = TRUE))
}
Shiny bindings for picker
Description
Output and render functions for using picker within Shiny applications and interactive Rmd documents.
Usage
pickerOutput(outputId, width = "100%", height = "400px")
renderPicker(expr, env = parent.frame(), quoted = FALSE)
Arguments
outputId |
output variable to read from |
width , height |
Must be a valid CSS unit (like |
expr |
An expression that generates a picker |
env |
The environment in which to evaluate |
quoted |
Is |
Value
An output or render function that enables the use of the widget within Shiny applications.
Create a picker proxy object
Description
Creates a picker-like object that can be used to update a picker object that has already been rendered.
Usage
picker_proxy(shinyId, session = shiny::getDefaultReactiveDomain())
Arguments
shinyId |
single-element character vector indicating the output ID of the deck to modify |
session |
the |
Value
a picker_proxy
object that can be updated with update_picker
.
See Also
Send commands to a picker instance in a Shiny
app
Description
Send commands to a picker instance in a Shiny
app
Usage
update_picker(
proxy,
view_state = NULL,
colors = NULL,
labels = NULL,
label_coords = NULL,
polygons = NULL,
show_grid = NULL,
title = NULL
)
Arguments
proxy |
picker proxy object created by |
view_state |
view state from other picker input (optional). |
colors |
vector of hex colors, one for each row of |
labels |
vector of point labels used for tooltips on hover. |
label_coords |
data.frame with three columns 'x', 'y', and 'label'. Used for text layer. |
polygons |
data.frame containing at minimum columns 'x1', 'x2', 'y1', 'y2', that define the polygons to draw and 'color' that defines the color. |
show_grid |
set to |
title |
character string to show in top left of plot. |
Value
The original proxy
object. Called for side effects.