SveltePlots is an innovative charting library designed to enhance Shiny
applications by utilizing the power of Svelte and Javascript. This library is a wrapper for a custom Svelte web component that leverages SVG to create interactive and dynamic charts. SveltePlots
includes a limited amount of charts to date which are line and scatter plots, bar charts, density charts, and histograms.
Key Features
- State Management: Benefit from Svelte’s exceptional state management to handle dynamic updates seamlessly.
-
Ease of Use: Eliminate the need for
proxy
functions,renderUI
,insertUI
, andremoveUI
inShiny
, simplifying your code and enhancing maintainability. - Interactive Charts: Create highly interactive and responsive charts with minimal effort.
- SVG-based: Utilize SVG for crisp and scalable vector graphics, ideal for a wide range of data visualizations.
Ease of Use
Traditional Approach with Proxy Functions
When using JavaScript-based charting libraries in Shiny
:
- Proxy Functions: Proxy functions are created to handle updates to the chart. These functions allow developers to modify certain parts of the chart specification without re-rendering the entire chart. For example, if only the data points change, the proxy function will update just the data-related part of the chart.
- Partial Updates: By sending only the changes (such as new data points or updated axis labels) to the client-side JavaScript, these functions help maintain performance and responsiveness. This avoids the overhead of re-sending and re-rendering the entire chart.
SveltePlots Approach
SveltePlots takes a different approach due to the advantages provided by Svelte’s reactivity system:
- Complete Specification Updates: Instead of sending partial updates, the entire chart specification is sent to Svelte. This might seem inefficient at first glance, but Svelte’s optimized update mechanism ensures that only the parts of the DOM that need to change are updated.
- Svelte’s Reactivity: Svelte automatically tracks the dependencies and efficiently updates only the parts of the chart that have changed. This makes it unnecessary to manually create proxy functions and manage partial updates.
Benefits of SveltePlots
Simplified Code
By leveraging Svelte’s reactivity:
- No Need for Proxy Functions: Developers do not need to create and manage proxy functions to handle partial updates. This reduces the complexity of the code base.
- Automatic Updates: Svelte handles the state management and ensures that only the necessary parts of the chart are re-rendered, even when the entire specification is sent.
Enhanced Maintainability
- Reduced Boilerplate: Without the need for proxy functions, the code becomes cleaner and easier to maintain.
- Consistency: Sending the entire specification ensures that the chart’s state is always consistent with the application’s state, reducing the likelihood of bugs caused by partial updates.
Installation
install.packages("SveltePlots")