Plotly.js Open-Source Announcement
November 17, 2015
A growing number of graphing tools and libraries allow anyone to make beautiful, interactive web-based graphs. By interactively visualizing our data online, we share complex ideas in an exploratory, visual, open, and collaborative way.
We’re big fans of collaboration, freedom, and perpetual motion. Open-source has become the de facto distribution for gold-standard scientific and business intelligence software. We want to support, participate in, and amplify this trend. By open-sourcing Plotly’s core technology, everyone benefits from peer-review and Plotly’s products will continue to be the most cutting-edge offering for exploratory visualization. Plotly.js has the quality, accessibility, and scope to be the charting standard for the Web, but we can only achieve this breadth by working across communities and making the distribution truly unencumbered, portable, and free.
Plotly.js was instigated by Dr. Alex Johnson and has been in development for over 3 years.
Access the GitHub repository here.
A contour density plot drawn with plotly.js. Visit the plotly.js documentation to to get started.
Seven details that make the project unique
SVG & WebGL backends. Plotly.js uses both D3.js (SVG) and WebGL for graphics rendering. WebGL allows interactive rendering of hundreds of thousands to millions of x-y points, while D3.js is more practical for up to tens of thousands of points and vector-quality image export.
User documentation. The plotly.js documentation is hosted on GitHub pages and is open-source under a Creative Commons license.
No dependencies. Plotly.js is an “all-in-one bundle” with d3.js and stack.gl modules baked-in.
No jQuery. jQuery has been removed from plotly.js for significantly better performance and improved browser compatibility.
Powered by a JSON schema Plotly.js is based on a new open-source JSON schema for creating, saving, and sharing scientific charts.
A new JSON schema for data visualization
Plotly.js is based on a declarative, open-source JSON schema that attempts to describe every physical aspect of any scientific chart. With this approach, the role of plotly.js is simple: plotly.js takes the JSON specification of a chart and produces it as an interactive visualization.
The JSON schema makes Plotly charts language agnostic - They can be easily translated from one format to another:
- Interactive chart: https://plot.ly/~empet/6640
- JSON specification: https://plot.ly/~empet/6640.json
- plotly.js code: https://plot.ly/~empet/6640.json
- Raster image: https://plot.ly/~empet/6640.png
- Vector image: https://plot.ly/~empet/6640.svg
- Python code: https://plot.ly/~empet/6640.py
- CSV data: https://plot.ly/~empet/6640.csv
Browse Plotly’s community-created chart feed and append “.json” to the URL of any chart to see its JSON specification.
Distinction from vega and vega-lite
The vega and vega-lite schemas are more opinionated in prescribing how the chart data is grouped, sliced, or statistically processed before graphical display. This allows for complicated chart display with a concise JSON description, but leaves less control to the user. Neither approach is more “correct”—they’re just different.
Implications for developers
The latest full version of plotly.js is available for free, unlimited use in any project. Plotly.js code uses the MIT open-source license, the same license used by Bootstrap.js. The MIT open-source license puts no restrictions on how the code is used. Licensees who have previously purchased a plotly.js commercial license will no longer be charged the annual license fee and are encouraged to update to the latest plotly.js version under the MIT license.
The latest version of plotly.js can be downloaded from GitHub or the documentation home.
R, Python, & MATLAB Engineers and Data Scientists
Plotly can now be used 100% offline in RStudio, MATLAB, or Jupyter notebook free-of-charge. The R, Python, and MATLAB clients for Plotly have always been open-source, while the core graphics layer—plotly.js—was closed-source. Now the entire stack is open-source.
This makes for a better user experience:
- There is no round-trip to Plotly’s server, so plotting is fast.
- For the same reason, you can plot more data.
- In RStudio, Plotly charts now appear natively in RStudio instead of opening in a browser tab.
- Everything is local — You can create charts completely independently from Plotly’s online platform.
Future plans and contributing
The plotly.js roadmap is constantly changing, but 2016 is likely to be focused on performance. We would like the higher performance 2D WebGL graphics backend to reach feature parity with the more mature SVG (D3.js) backend.
If you’re an R, Python, MATLAB, or Julia developer please consider contributing to one of the clients on Plotly’s GitHub.
Humans behind the project
Plotly.js core developers
- Alex Johnson: Plotly.js lead developer, architect, and instigator
- Mikola Lysenko: Stack.gl WebGL work lead
- Étienne Tétreault-Pinard: Geospatial work lead
- Chris Parmer: Documentation lead
- Ben Postlethwaite: Image testing server lead
R, Python, and MATLAB client developers
- Python: Andrew Seier, Chelsea Douglas, Chris Parmer, Étienne Tétreault-Pinard
- R: Carson Sievert, Marianne Corvellec, Toby Dylan Hocking, Baobao Zhang
- MATLAB: Chuck Bronson, Chris Parmer
- Siemens Corporation
- National Research Council of Canada
- Rho Canada Ventures
- MHS Capital