0.3.2 • Published 1 year ago

svelte-plotly.js v0.3.2

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Plotly.js for Svelte

This is an unofficial package that lets you efficiently use plotly.js inside your Svelte or SvelteKit app.

Usage

  1. Install using yarn add svelte-plotly.js or npm install svelte-plotly.js.
  2. Choose a Plotly distribution:
    • If you want to use plotly.js-dist, just install it.
    • If you want to use a different distribution, take a look at this section.
  3. Use in your app:
<script lang="ts">
  import Plot from 'svelte-plotly.js';

  const data = [
    {
      x: [1, 2, 3, 4, 5],
      y: [1, 2, 4, 8, 16]
    }
  ];
</script>

<Plot
  {data}
  layout={{
    margin: { t: 0 }
  }}
  fillParent='width'
  debounce={250}
/>

Custom Plotly distribution

Let's say you want to use svelte-plotly.js with a custom Plotly.js distribution, for example plotly.js-basic-dist-min. If you use Vite for bundling, the recommended way to do this would be to install plotly.js-basic-dist-min and then register it as an alias for plotly.js-dist by adding the following to your vite.config.js:

resolve: {
  alias: {
    "plotly.js-dist": "plotly.js-basic-dist-min",
    lodash: "lodash-es",
  },
},

If you don't use Vite, or this approach doesn't work for you, you can also use the libPlotly prop of the Plotly component:

<script lang="ts">
  import Plot from 'svelte-plotly.js';
  import libPlotly from 'plotly.js-basic-dist-min';
</script>

<Plot {libPlotly} ... />

Properties

PropTypeDescription
required dataData[]array of trace data, see https://plot.ly/javascript/reference/
layoutPartial<Layout>layout of the plot, see https://plot.ly/javascript/reference/#layout
configPartial<Config>configuration, see https://plot.ly/javascript/configuration-options/
classstringclass that will be passed to the HTML element wrapping the plot
fillParentboolean \| 'width' \| 'height'automatically resize the plot to fill the width and/or height of its parent element
debouncenumber \| DebounceOptionsdebounce all changes to the plot
libPlotlyPlotly \| null \| undefinedan alternative Plotly bundle to use; if undefined, it defaults to the plotly.js-dist package; if null, no plot will be drawn and no library will be downloaded
bind:elementHTMLDivElementthe HTML element wrapping the plot
bind:plotPlotlyHTMLElementthe inner HTML element containing the plot

Events

NOTE: Due to Plotly's atrocious documentation, most events aren't even mentioned anywhere. Links to source code are provided as the bare minimum information about each event.

PropCallback argumentDescription
on:afterExport?
on:afterPlottriggers each time a chart is plotted, or re-plotted after the restyling or relayout of a plot (docs), (src)
on:animatedtriggers once an animation finished playing (demo), (docs), (src 1), (src 2)
on:animating? (src)
on:animatingFrameFrameAnimationEvent? (src)
on:animationInterrupted? (src)
on:autoSize? (docs)
on:beforeExport?
on:beforeHoverPlotMouseEvent?
on:beforePlotBeforePlotEvent? (src)
on:buttonClickedButtonClickedEvent?
on:clickPlotMouseEvent? (docs 1), (docs 2)
on:clickAnnotationClickAnnotationEvent?
on:deselect? (docs)
on:doubleClick? (docs)
on:framework?
on:hoverPlotHoverEvent? (docs)
on:legendClickLegendClickEvent? (docs)
on:legendDoubleClickLegendClickEvent? (docs)
on:reactPlotUpdateEvent?
on:redraw? (docs)
on:relayoutPlotRelayoutEvent? (docs)
on:relayoutingPlotRelayoutEvent? (docs)
on:restylePlotRestyleEvent? (docs)
on:selectedPlotSelectionEvent? (docs)
on:selectingPlotSelectionEvent? (docs)
on:sliderChangeSliderChangeEvent?
on:sliderEndSliderEndEvent?
on:sliderStartSliderStartEvent?
on:sunburstClickSunburstClickEvent?
on:transitioned?
on:transitioning?
on:transitionInterrupted?
on:unhoverPlotMouseEvent?
on:updatePlotUpdateEvent?
on:webGLContextLost? (docs)

Roadmap

  • add autosizing
  • add debouncing
  • add event redirecting
  • add unit tests
  • add SSR rendering to an image
0.3.2

1 year ago

0.3.1

1 year ago

0.3.0

2 years ago

0.2.1

2 years ago

0.1.2

2 years ago

0.2.0

2 years ago

0.1.7

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago