The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
figureBuilderUI() / figureBuilderServer()),
so it can be embedded inside a larger app and instantiated more than
once, just like the plot modules. figureBuilderApp() is now
a thin wrapper around this module and keeps its existing behaviour. The
canvas CSS/JS was made namespace-safe (class-based, per-instance) so
multiple builders can coexist on one page.
figureBuilderApp() function so it can be launched directly
(figureBuilderApp()), seeded with custom datasets via
data_list, extended with custom modules via
module_registry, and returned either as a
shinyApp() object or as separate
ui/server components
(return_components = TRUE). The bundled
inst/apps/figure-builder app is now a thin wrapper around
this function..facet_check(), whose output
populates the facet/split input choices.boxpoints = FALSE behaviour (via ggplot2’s
outlier.shape = NA in the plotthis_BoxPlot
module and dittoViz::yPlot’s
boxplot.show.outliers argument in
dittoViz_yPlot), rather than post-hoc marker manipulation.
Removed the now-unused internal helper
.remove_boxplot_outliers(). This is more robust with plotly
4.12.0+.multiDynamicInput() (with
updateMultiDynamicInput()), that lets users dynamically add
and remove rows of heterogeneous inputs. Each row is described by a
generic row_spec (a named list of field specs using either
a type alias — select, text,
numeric, slider, checkbox,
colour — or an arbitrary input constructor via
fn), a + Add button appends rows, each row has
an X delete button, and fields wrap to a new line after
max_per_row (default 4). The value returned to the server
is a named list of rows (model1, model2, …),
each a named list keyed by the field names. Add/delete are handled
client-side, and values are read back generically via each field’s
registered Shiny input binding, so any input type is supported.
vignette("using-custom-shiny-inputs")
documenting multiDynamicInput() usage: row_spec definition,
pre-filling with elements, reading values, and server-side
updates.dittoViz_scatterPlot module. The module’s custom-model
feature now supports multiple models at once via
multiDynamicInput(): add as many rows as you like, each
with its own model type
(lm/glm/loess/nls),
formula, line colour, and line width, and every valid model is fitted
against the active (filtered) data and overlaid as its own line
(respecting faceting). Formulas are validated by the internal
.safe_build_model() helper to ensure safety.
register_model_backend(), get_model_backend(),
list_model_backends(), and
build_model_row_spec(). Backends declare a fit
function, a predict function, validated output classes, and
optional extra UI fields that appear/hide dynamically based
on the selected model type. The four built-in backends (lm, glm, loess,
nls) are registered automatically at package load. Extra UI fields from
backends are forwarded to fit() via ....vignette("custom-model-lines")
documenting the model backend registry: how the pipeline works, setting
model defaults, registering custom backends (with drc and mgcv
examples), and how extra fields flow through to the fit function.defaults, hide.inputs, and
hide.tabs arguments to the module app factory functions in
all module app wrappers, so that users can pre-fill or hide controls
when testing modules in isolation.hide.inputs or dynamically in response to
other inputs), the remaining controls reflow to fill the space and no
empty gaps are left in the UI. Input grids are now laid out with a
wrapping flexbox container via organize_inputs(). Optional
elements are handled gracefully.plotthis_DotPlot, plotthis_BarPlot, and
plotthis_SplitBarPlot modules, exposing the new
lower_quantile/upper_quantile/lower_cutoff/upper_cutoff
arguments from plotthis 0.13.0. These controls appear only when the
selected fill column is numeric.plotthis_DotPlot module, exposing the new
border_color and border_size arguments from
plotthis 0.13.0. border_color is limited to a single
constant color in the module UI.plotthis_DotPlot “Fill Cutoff” control to
pair a numeric value with a new “Fill Cutoff Direction” selector
(<, <=, >,
>=), matching plotthis 0.13.0’s string-expression
fill_cutoff (e.g. "< 18").hide.inputs and
hide.tabs arguments in module app wrappers due to lazy UI
injection via renderUI, which effectively overwrote the
hide calls. renderUI also re-renders the input
UIs every time a dataset changes - now if the dataset changes, the
inputs are re-rendered but the hide calls are re-applied to
maintain the hidden state.plotthis_SplitBarPlot where the
categorical text position input was not respected if the axes were
flipped. Now the text position input is respected regardless of axis
orientation.sciVizModules.dittoViz_yPlot where plot selection and
outlier hiding were not respected appropriately due to a typo in the
boxplot.show.outliers input name.dittoViz_scatterPlot where 2
split.by inputs caused an error due to improper checks for
empty strings on a vector of elements.dittoViz_scatterPlot where highlight
aesthetics weren’t applied when a categorical x-axis was used.ternaryPlot module, as it is just a bad plot
that’s impossible to actually interpret or really utilize
effectively.*OutputUI() functions gained a
resizable argument (default TRUE). When
FALSE, the plot output is no longer wrapped in
shinyjqui::jqui_resizable(), which avoids a redundant
resize handle when the output is embedded in a container that already
provides resizing (such as the Figure Builder app cards).plotthis_DotPlot module
(plotthis_DotPlotInputsUI(),
plotthis_DotPlotOutputUI(),
plotthis_DotPlotServer(), and the
plotthis_DotPlotApp() convenience wrapper) that wraps
plotthis::DotPlot() for interactive dot plots, including a
custom dot-size legend since plotly still lacks that capability.example_markers dataset, a simulated
single-cell marker-gene expression table (immune cell types × marker
genes) used as the default example data for the DotPlot module.plotly::plotly_data()), and for modules with
statistics enabled (Box / Violin / yPlot), a table of the statistics
info. Source downloads are now built from the exported
collect_source_data() and
create_source_download_handler() helpers, and each module
server returns its source reactive so it can be reused (e.g. by the
Figure Builder). Given source data is now required by many journals,
this is important.compute_pairwise_stats(),
create_stat_annotations(),
apply_stat_annotations(),
generate_pair_strings(), and
parse_pair_strings().empty_plot() for use as a placeholder, e.g. if
parameters aren’t valid for a given plot type, to pass that info to user
without ugly error messages.apply_title_layout(), resulting in significantly less
jank.yPlot,
scatterPlot, linePlot.dittoViz_scatterPlot module.size.by legends added for
plotthis_DotPlot and dittoViz_scatterPlot
modules, since plotly does not yet support these.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.