Plotly.js is a standalone Javascript data visualization library, and it also powers the Python and R modules named plotly in those respective ecosystems (referred to as Plotly.py and Plotly.R).
Plotly.js can be used to produce dozens of chart types and visualizations, including statistical charts, 3D graphs, scientific charts, SVG and tile maps, financial charts and more.
Contact us for Plotly.js consulting, dashboard development, application integration, and feature additions.
- Load as a node module
- Load via script tag
- Bundles
- Alternative ways to load and build plotly.js
- Documentation
- Bugs and feature requests
- Contributing
- Notable contributors
- Copyright and license
- Community
Install a ready-to-use distributed bundle
npm i --save plotly.js-dist-minand use import or require in node.js
// ES6 module
import Plotly from 'plotly.js-dist-min'
// CommonJS
var Plotly = require('plotly.js-dist-min')You may also consider using plotly.js-dist if you prefer using an unminified package.
In the examples below
Plotlyobject is added to the window scope byscript. ThenewPlotmethod is then used to draw an interactive figure as described bydataandlayoutinto the desireddivhere namedgd. As demonstrated in the example above basic knowledge ofhtmland JSON syntax is enough to get started i.e. with/without JavaScript! To learn and build more with plotly.js please visit plotly.js documentation.
<head>
<script src="https://cdn.plot.ly/plotly-3.1.0.min.js" charset="utf-8"></script>
</head>
<body>
<div id="gd"></div>
<script>
Plotly.newPlot("gd", /* JSON object */ {
"data": [{ "y": [1, 2, 3] }],
"layout": { "width": 600, "height": 400}
})
</script>
</body>Alternatively you may consider using native ES6 import in the script tag.
<script type="module">
import "https://cdn.plot.ly/plotly-3.1.0.min.js"
Plotly.newPlot("gd", [{ y: [1, 2, 3] }])
</script>Fastly supports Plotly.js with free CDN service. Read more at https://www.fastly.com/open-source.
While non-minified source files may contain characters outside UTF-8, it is recommended that you specify the charset when loading those bundles.
<script src="https://cdn.plot.ly/plotly-3.1.0.js" charset="utf-8"></script>Please note that as of v2 the "plotly-latest" outputs (e.g. https://cdn.plot.ly/plotly-latest.min.js) will no longer be updated on the CDN, and will stay at the last v1 patch v1.58.5. Therefore, to use the CDN with plotly.js v2 and higher, you must specify an exact plotly.js version.
You could load either version two or version three of MathJax files, for example:
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG.js"></script><script src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js"></script>When using MathJax version 3, it is also possible to use
chtmloutput on the other parts of the page in addition tosvgoutput for the plotly graph. Please refer todevtools/test_dashboard/index-mathjax3chtml.htmlto see an example.
You may simply load virtual-webgl script for WebGL 1 (not WebGL 2) before loading other scripts.
<script src="https://unpkg.com/virtual-webgl@1.0.6/src/virtual-webgl.js"></script>There are two kinds of plotly.js bundles:
- Complete and partial official bundles that are distributed to
npmand theCDN, described in the dist README. - Custom bundles you can create yourself to optimize the size of bundle depending on your needs. Please visit CUSTOM_BUNDLE for more information.
If your library needs to bundle or directly load plotly.js/lib/index.js or parts of its modules similar to index-basic in some other way than via an official or a custom bundle, or in case you want to tweak the default build configurations, then please visit BUILDING.md.
Official plotly.js documentation is hosted at https://plotly.com/javascript.
These pages are generated by the Plotly graphing-library-docs repo built with Jekyll and publicly hosted on GitHub Pages. For more info about contributing to Plotly documentation, please read through contributing guidelines.
Have a bug or a feature request? Please open a Github issue keeping in mind the issue guidelines. You may also want to read about how changes get made to Plotly.js
Please read through our contributing guidelines. Included are directions for opening issues, using plotly.js in your project and notes on development.
Plotly.js is at the core of a large and dynamic ecosystem with many contributors who file issues, reproduce bugs, suggest improvements, write code in this repo (and other upstream or downstream ones) and help users in the Plotly community forum. The following people deserve special recognition for their outsized contributions to this ecosystem:
| GitHub | Status | ||
|---|---|---|---|
| Alex C. Johnson | @alexcjohnson | Active, Maintainer | |
| Mojtaba Samimi | @archmoj | @solarchvision | Active, Maintainer |
| Emily Kellison-Linn | @emilykl | Active, Maintainer | |
| My-Tien Nguyen | @my-tien | Active, Community Contributor | |
| Birk Skyum | @birkskyum | Active, Community Contributor | |
| Étienne Tétreault-Pinard | @etpinard | @etpinard | Hall of Fame |
| Antoine Roy-Gobeil | @antoinerg | Hall of Fame | |
| Jack Parmer | @jackparmer | Hall of Fame | |
| Nicolas Kruchten | @nicolaskruchten | @nicolaskruchten | Hall of Fame |
| Mikola Lysenko | @mikolalysenko | @MikolaLysenko | Hall of Fame |
| Ricky Reusser | @rreusser | @rickyreusser | Hall of Fame |
| Dmitry Yv. | @dy | @DimaYv | Hall of Fame |
| Jon Mease | @jonmmease | @jonmmease | Hall of Fame |
| Robert Monfera | @monfera | @monfera | Hall of Fame |
| Robert Möstl | @rmoestl | @rmoestl | Hall of Fame |
| Nicolas Riesco | @n-riesco | Hall of Fame | |
| Miklós Tusz | @mdtusz | @mdtusz | Hall of Fame |
| Chelsea Douglas | @cldougl | Hall of Fame | |
| Ben Postlethwaite | @bpostlethwaite | Hall of Fame | |
| Hannah Ker | @hannahker | @hannahker11 | Hall of Fame |
| Chris Parmer | @chriddyp | Hall of Fame | |
| Alex Vados | @alexander-daniel | Hall of Fame |
Code and documentation copyright 2021 Plotly, Inc.
Code released under the MIT license.
This project is maintained under the Semantic Versioning guidelines.
See the Releases section of our GitHub project for changelogs for each release version of plotly.js.
- Follow @plotlygraphs on Twitter for the latest Plotly news.
- Implementation help may be found on community.plot.com (tagged
plotly-js) or on Stack Overflow (taggedplotly). - Developers should use the keyword
plotlyon packages which modify or add to the functionality of plotly.js when distributing through npm. =======
An R package for creating interactive web graphics via the open source JavaScript graphing library plotly.js.
Install from CRAN:
install.packages("plotly")Or install the latest development version (on GitHub) via {remotes}:
remotes::install_github("plotly/plotly")If you use ggplot2, ggplotly()
converts your static plots to an interactive web-based version!
library(plotly)
g <- ggplot(faithful, aes(x = eruptions, y = waiting)) +
stat_density_2d(aes(fill = ..level..), geom = "polygon") +
xlim(1, 6) + ylim(40, 100)
ggplotly(g)By default, ggplotly() tries to replicate the static ggplot2 version
exactly (before any interaction occurs), but sometimes you need greater
control over the interactive behavior. The ggplotly() function itself
has some convenient “high-level” arguments, such as dynamicTicks,
which tells plotly.js to dynamically recompute axes, when appropriate.
The style() function also comes in handy for modifying the
underlying trace
attributes (e.g. hoveron) used to generate the plot:
gg <- ggplotly(g, dynamicTicks = "y")
style(gg, hoveron = "points", hoverinfo = "x+y+text", hoverlabel = list(bgcolor = "white"))Moreover, since ggplotly() returns a plotly object, you can apply
essentially any function from the R package on that object. Some useful
ones include layout() (for customizing the
layout),
add_traces() (and its higher-level add_*() siblings, for example
add_polygons(), for adding new
traces/data),
subplot() (for combining multiple plotly
objects),
and plotly_json() (for inspecting the underlying JSON sent to
plotly.js).
The ggplotly() function will also respect some “unofficial”
ggplot2 aesthetics, namely text (for customizing the
tooltip),
frame (for creating
animations),
and ids (for ensuring sensible smooth transitions).
The plot_ly() function provides a more direct interface to plotly.js
so you can leverage more specialized chart types (e.g., parallel
coordinates or
maps) or even some visualization that the
ggplot2 API won’t ever support (e.g., surface,
mesh,
trisurf, etc).
plot_ly(z = ~volcano, type = "surface")To learn more about special features that the plotly R package provides (e.g., client-side linking, shiny integration, editing and generating static images, custom events in JavaScript, and more), see https://plotly-r.com. You may already be familiar with existing plotly documentation (e.g., https://plotly.com/r/), which is essentially a language-agnostic how-to guide for learning plotly.js, whereas https://plotly-r.com is meant to be more wholistic tutorial written by and for the R user. The package itself ships with a number of demos (list them by running demo(package = "plotly")) and shiny/rmarkdown examples (list them by running plotly_example("shiny") or plotly_example("rmd")). Carson also keeps numerous slide decks with useful examples and concepts.
Please read through our contributing guidelines. Included are directions for opening issues, asking questions, contributing changes to plotly, and our code of conduct.
e04eb4f08c325846d8cdedb9892332b85e16465d




