plotly.js README

The project's README from github.com/plotly/plotly.js. As one markdown file: README.md.

npm version CI MIT License

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.

Maintained by Plotly

Table of contents


Load as a node module

Install a ready-to-use distributed bundle

npm i --save plotly.js-dist-min

and 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.


Load via script tag

The script HTML element

In the examples below, the Plotly object is added to the window scope by the script tag. The newPlot method is then used to draw an interactive figure as described by data and layout into the desired div here named gd. As demonstrated in the example above, basic knowledge of HTML and JSON syntax is enough to get started, i.e., with or without JavaScript! To learn and build more with plotly.js, please visit the plotly.js documentation.

<head>
    <script src="https://cdn.plot.ly/plotly-4.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-4.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.

Un-minified versions are also available on CDN

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-4.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.

MathJax

plotly.js supports using MathJax v3 or v4 to render mathematical expressions within plots.

MathJax is not included in the plotly.js bundle, so it must be loaded separately as a script on the webpage.

For MathJax v4:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/tex-svg.js"></script>

For MathJax v3:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-svg.js"></script>

When MathJax is available, any string contained within $..$ signs will be rendered using the MathJax engine. This applies to plot titles, axis labels, tick label text, and annotations.

plotly.js's use of the MathJax svg renderer should not prevent using other MathJax renderers elsewhere on the page, nor will it affect the global MathJax config. See devtools/test_dashboard/index-mathjax3chtml.html for an example of a webpage which uses the MathJax chtml renderer in the main page, and also displays Plotly charts containing MathJax equations rendered as svg.

Need to have several WebGL graphs on a page?

You may simply load the virtual-webgl script for WebGL 1 (not WebGL 2) before loading other scripts.

<script src="https://unpkg.com/[email protected]/src/virtual-webgl.js"></script>

Bundles

There are two kinds of plotly.js bundles:

  1. Complete and partial official bundles that are distributed to npm and the CDN, described in the dist README.
  2. Custom bundles you can create yourself to optimize the size of the bundle depending on your needs. Please visit CUSTOM_BUNDLE for more information.

Alternative ways to load and build plotly.js

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.


Documentation

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.


Bugs and feature requests

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.


Contributing

Please read through our contributing guidelines. Included are directions for opening issues, using plotly.js in your project and notes on development.


Notable contributors

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:

Contributor GitHub Status
Alex C. Johnson @alexcjohnson Active, Maintainer
Emily Kellison-Linn @emilykl Active, Maintainer
Cameron DeCoster @camdecoster Active, Maintainer
Mojtaba Samimi @archmoj Active, Community Contributor
My-Tien Nguyen @my-tien Active, Community Contributor
Birk Skyum @birkskyum Active, Community Contributor
Étienne Tétreault-Pinard @etpinard Hall of Fame
Antoine Roy-Gobeil @antoinerg Hall of Fame
Jack Parmer @jackparmer Hall of Fame
Nicolas Kruchten @nicolaskruchten Hall of Fame
Mikola Lysenko @mikolalysenko Hall of Fame
Ricky Reusser @rreusser Hall of Fame
Dmitry Yv. @dy Hall of Fame
Jon Mease @jonmmease Hall of Fame
Robert Monfera @monfera Hall of Fame
Robert Möstl @rmoestl Hall of Fame
Nicolas Riesco @n-riesco Hall of Fame
Miklós Tusz @mdtusz Hall of Fame
Chelsea Douglas @cldougl Hall of Fame
Ben Postlethwaite @bpostlethwaite Hall of Fame
Hannah Ker @hannahker Hall of Fame
Chris Parmer @chriddyp Hall of Fame
Alex Vados @alexander-daniel Hall of Fame

Code and documentation copyright 2025 Plotly, Inc.

Code released under the MIT license.

Versioning

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.


Community

plotly.js (plotly/plotly.js)

Searching Database…

18.4K ·GitHub
这是什么?Plotly.js 是一个开源的 JavaScript 图表库,可以在浏览器里画出可交互的图表。它也是 Python 和 R 的 plotly 模块(Plotly.py、Plotly.R)的底层,还是 Plotly 和 Dash 背后的技术。
所以它不是打开就能用的应用,而是要在自己的网页里调用的库?没错:把它加载到页面上,然后调用 Plotly.newPlot,传入数据和布局对象,就能在一个 div 里画出可交互的图表;没有单独的应用需要运行。
怎么把它加到网页里?两种方式:安装 npm 包后在 node.js 里用 import 或 require 引入,或者加一个 script 标签,把 Plotly 挂到 window 上。Fastly 通过免费 CDN 提供这些文件。
画第一张图需要很懂 JavaScript 吗?不太需要:按照 README 的说法,只要懂一点 HTML 和 JSON 语法就能上手,会不会 JavaScript 都行——一张图其实只是数据和布局对象。
从 CDN 加载有什么要注意的坑吗?有——从 v2 开始,'plotly-latest' 的 CDN 文件被冻结在 v1.58.5。要用 plotly.js v2 及以上版本,必须在 URL 里写明确切的版本号。
可以免费使用吗,包括商业项目?可以。代码和文档都基于 MIT 许可证发布(版权归 Plotly, Inc. 所有),商业使用没有问题。
它能画哪些类型的图表?支持几十种图表类型和可视化:统计图表、3D 图形、科学图表、SVG 地图和瓦片地图、金融图表等等。
完整的包很大——能不能只打包我用到的图表类型?可以。npm 和 CDN 上都有官方的完整包和精简包,你还可以自己构建只包含应用所用功能的自定义包,来减小文件体积。
能在标题和坐标轴标签里渲染数学公式吗?可以——在页面上单独加载 MathJax v3 或 v4,任何用 $..$ 符号包裹的字符串,都会由 MathJax 在图表标题、坐标轴标签、刻度标签和注释里渲染出来。
一个页面能同时放多个 WebGL 图表吗?可以——在加载其他脚本之前先加载 virtual-webgl 脚本(只支持 WebGL 1,不支持 WebGL 2),多个 WebGL 图表就能共用一个页面。
What are similar projects?plotly.py, d3, G2, victory, flint-chart, vega, aetherviz-master, echarts
Creator
plotly
Size
2.1 GB
Stars
18.4K
Age
10y
Commits · 90 Days