nuxt-plotly
Nuxt Plotly Module
📊 nuxt-plotly module is thin Nuxt3 wrapper for plotly.js
Features
- 🎇 All plotly.js methods and events
- 🗾 Auto redraw on screensize changes and props update
- 🚀 Data reactivity
- 🏝️ TypeScript support
Quick Setup
- Add
nuxt-plotlydependency to your project
npx nuxi@latest module add nuxt-plotly
- Add
nuxt-plotlyto themodulessection ofnuxt.config.ts
// nuxt.config.js
export default defineNuxtConfig({
/**
* Add nuxt-plotly module
*/
modules: ["nuxt-plotly"],
/**
* Add nuxt-plotly module with options
* Set the inject option to true to use plotly function via $plotly
*/
// modules: [["nuxt-plotly", { inject: true }]],
});
- Add
plotly.js-dist-minto thevite.optimizeDeps.includesection ofnuxt.config.ts
// nuxt.config.js
export default defineNuxtConfig({
vite: {
optimizeDeps: {
include: ["plotly.js-dist-min"],
},
},
});
That's it! You can now use Nuxt Plotly Module in your Nuxt app ✨
Require client-side
There are two ways to use the nuxt-plotly module on the client-side in Nuxt3:
- Wrap the component with the
<client-only>tag.
<client-only>
<nuxt-plotly
:data="pieChart.data"
:layout="pieChart.layout"
:config="pieChart.config"
style="width: 100%"
></nuxt-plotly>
</client-only>
- Create a file with the
.client.vueextension, for example, PieChart.client.vue and then you can use the component without the<client-only>tag.
Plotly Event listeners
You can access Plotly events using the @on-ready directive to receive the PlotlyHTMLElement object from the <nuxt-plotly> component.
- HTML template example
<template>
<client-only>
<nuxt-plotly
:data="data"
:layout="layout"
:config="config"
@on-ready="myChartOnReady"
></nuxt-plotly>
</client-only>
</template>
- After receiving the PlotlyHTMLElement, you can access Plotly events
function myChartOnReady(plotlyHTMLElement: NuxtPlotlyHTMLElement) {
console.log({ plotlyHTMLElement });
plotlyHTMLElement.on?.("plotly_afterplot", function () {
console.log("done plotting");
});
plotlyHTMLElement.on?.("plotly_click", function () {
alert("You clicked this Plotly chart!");
});
}
Plotly Functions
To use the Plotly Function in your nuxt project, follow these steps:
- Step 1: Set the
injectoption totruein thenuxt-plotlymodule configuration of yournuxt.config.tsfile.
// nuxt.config.js
export default defineNuxtConfig({
modules: [["nuxt-plotly", { inject: true }]],
});
- Step 2: After setting the inject option to true, you can now access the plotly function via
$plotlyin your nuxt project.
// app.vue
const { $plotly } = useNuxtApp();
/**
* Show all plotly functions
*/
console.log($plotly);
/**
* Use downloadImage function
*/
$plotly.downloadImage(plotlyHTMLElement as HTMLElement, {
format: "png",
width: 800,
height: 600,
filename: "newplot",
});
Type Aliases
These type aliases simplify the usage of Plotly types in your Nuxt project:
/**
* Represents an array of Plotly data objects.
*/
export type NuxtPlotlyData = Array<Plotly.Data>;
/**
* Represents a partial configuration object for Plotly charts.
*/
export type NuxtPlotlyConfig = Partial<Plotly.Config>;
/**
* Represents a partial layout object for Plotly charts.
*/
export type NuxtPlotlyLayout = Partial<Plotly.Layout>;
/**
* Represents a partial HTML element that holds a rendered Plotly chart.
*/
export type NuxtPlotlyHTMLElement = Partial<Plotly.PlotlyHTMLElement>;
With these type aliases, you can easily work with Plotly data, configurations, layouts, and HTML elements in your Nuxt application, enhancing your experience when creating interactive charts and visualizations.
Development: If you want to contribute
# Install dependencies
npm install
# Generate type stubs
npm run dev:prepare
# Develop with the playground
npm run dev
# Build the playground
npm run dev:build
# Run ESLint
npm run lint
# Run Vitest
npm run test
npm run test:watch
# Release new version
npm run release
License
Copyright © 2023 Supanut Dokmaithong.
This project is MIT licensed.
Related Packages
Effortless integration of Facebook's Customer Chat SDK into Nuxt 3. Enhance user...
One utility function for module authors to define compiler constants for all bui...
Version History
| Version | Released | License |
|---|---|---|
| 1.0.14 | MIT | |
| 1.0.13 | MIT | |
| 1.0.12 | MIT | |
| 1.0.11 | MIT | |
| 1.0.10 | MIT | |
| 1.0.9 | MIT | |
| 1.0.8 | MIT | |
| 1.0.7 | MIT | |
| 1.0.6 | MIT | |
| 1.0.5 | MIT | |
| 1.0.4 | MIT | |
| 1.0.3 | MIT | |
| 1.0.2 | MIT | |
| 1.0.1 | MIT |