Open-source JavaScript charting library behind Plotly and Dash

Overview

npm version circle 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.

Table of contents

Quick start options

Install with npm

npm install plotly.js-dist

and import plotly.js as

import Plotly from 'plotly.js-dist'
// Or using require,
var Plotly = require('plotly.js-dist')

Use the plotly.js CDN hosted by Fastly

<!-- Latest compiled and minified plotly.js JavaScript -->
<script src="https://cdn.plot.ly/plotly-latest.min.js" charset="utf-8"></script>

<!-- OR use a specific plotly.js release (e.g. version 1.52.3) -->
<script src="https://cdn.plot.ly/plotly-1.52.3.min.js" charset="utf-8"></script>

<!-- OR an un-minified version is also available -->
<script src="https://cdn.plot.ly/plotly-latest.js" charset="utf-8"></script>

and use the Plotly object in the window scope.

Fastly supports Plotly.js with free CDN service. Read more at https://www.fastly.com/open-source

Download the latest release

Latest Release on GitHub

and use the plotly.js dist file(s). More info here.

Read the Getting started page for more examples.

Modules

Starting in v1.15.0, plotly.js ships with several partial bundles (more info here).

Starting in v1.39.0, plotly.js publishes distributed npm packages with no dependencies. For example, run npm install plotly.js-geo-dist and add import Plotly from 'plotly.js-geo-dist'; to your code to start using the plotly.js geo package.

If none of the distributed npm packages meet your needs, and you would like to manually pick which plotly.js modules to include, you'll first need to run npm install plotly.js and then create a custom bundle by using plotly.js/lib/core, and loading only the trace types that you need (e.g. pie or choropleth). The recommended way to do this is by creating a bundling file. For example, in CommonJS:

// in custom-plotly.js
var Plotly = require('plotly.js/lib/core');

// Load in the trace types for pie, and choropleth
Plotly.register([
    require('plotly.js/lib/pie'),
    require('plotly.js/lib/choropleth')
]);

module.exports = Plotly;

Then elsewhere in your code:

var Plotly = require('./path/to/custom-plotly');

Alternatively you could browserify a custom bundle of desired trace modules e.g. pie and choropleth using npm run partial-bundle pie choropleth --name=custom

Building plotly.js

Building instructions using webpack, browserify and other build frameworks are in BUILDING.md

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

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.

Contributing

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

Community

  • 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 (tagged plotly).
  • Developers should use the keyword plotly on packages which modify or add to the functionality of plotly.js when distributing through npm.

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.

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:

GitHub Twitter Status
Alex C. Johnson @alexcjohnson Active, Maintainer
Mojtaba Samimi @archmoj @solarchvision Active, Maintainer
Antoine Roy-Gobeil @antoinerg Active, Maintainer
Nicolas Kruchten @nicolaskruchten @nicolaskruchten Active
Jon Mease @jonmmease @jonmmease Active
Étienne Tétreault-Pinard @etpinard @etpinard Hall of Fame
Mikola Lysenko @mikolalysenko @MikolaLysenko Hall of Fame
Ricky Reusser @rreusser @rickyreusser Hall of Fame
Dmitry Yv. @dy @DimaYv 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
Chris Parmer @chriddyp Hall of Fame
Alex Vados @alexander-daniel Hall of Fame

Copyright and license

Code and documentation copyright 2021 Plotly, Inc.

Code released under the MIT license.

Comments
  • Cartesian dropline support

    Cartesian dropline support

    This PR adds support for droplines on cartesian graphs. It works with sub-plots and scatter/line/bar.

    Some examples: drop1 drop2 drop3 drop4

    A new option is added to enable this behaviour (showDroplines), and it is disabled by default for backwards compatibility. Even if enabled, the chart must be on 'closest' hovermode and not 'compare'. Without this restriction there can be multiple points hovered simultaneously and that tended to make things confusing if there were multiple droplines.

    A couple small things right now:

    • ~~The droplines are drawn before the labels, but because the hover event fires on small moves, it can cause a redraw of the dropline causing it to be on top of the label. This should be pretty easily solved.~~
    • ~~It would probably be better to draw the dropline to the secondary axis on the right, instead of the left, for series plotted on that axis. Some dropline implementations just draw the line full across which avoids that issue, but I prefer this styling. Getting the dropline to swap sides has the added benefit of making it much more clear to the user which axis they should be reading, which on charts with 2 is always a point of confusion at first glance.~~ The bigger issue is what to do if there are even more axes off to the side, like on mocks/20.json, where the line may go to the plot edge and not the true axis, but where drawing the line on top of other axes to reach would look weird.

    drop5

    As usual, tests are a TODO. Please let me know if you'd prefer them sooner in the future. Also let me know if you'd prefer something other than a PR for a feature that may/may not be merged (which is why I skip tests off the bat)

    type: feature status: reviewable 
    opened by rpaskowitz 65
  • [WIP] Carpet plots

    [WIP] Carpet plots

    Trace types to be implemented:

    • [ ] trace type: carpet
      • [x] x-cheater
      • [ ] y-cheater
      • [x] first cut
      • [x] setconvert
        • [x] linear interpolation
        • [x] bicubic interpolation
        • [x] derivatives
        • [x] fix clipping and detection of out-of-range points
      • [x] attrs to style the axes (implemented but needs feedback)
      • [x] array tickmode label formatting
      • [x] linear tickmode label formatting
      • [x] graceful degradation when bad data is provided
      • [x] play with with cartesian axes/subplots
      • [x] hide cheater axis by default (if no other no-cheater traces visible on that axis)
      • [x] construct clip shape around the axis edge
      • [x] fix (disable?) hover
      • [ ] fix missing minor gridline on tickmode: 'array' axes
      • [x] image tests
      • [ ] good jasmine coverage
    • [ ] trace type: scattercarpet
      • [x] attributes
      • [x] supply defaults
      • [x] basic functionality
      • [x] clip to axis bounds
      • [x] fix hover
      • [ ] jasmine tests
      • [x] image tests
      • [x] break any connections with and filter invalid points
    • [ ] trace type: contourcarpet
      • [x] clip to axis bounds
      • [x] attributes
      • [x] supply defaults
      • [x] clean data
      • [x] contour lines
      • [x] filled contour inequalities
      • [x] filled contours
      • [ ] jasmine tests
      • [x] image tests
      • [x] fix fully-filled area bug (one side is closed but doesn't follow the edge
      • [x] legend symbols
      • [x] maybe constraints follow non-colorscale syntax?
      • [x] label inequalities on the plot
      • [x] assign to correct subplot based on carpetid (must currently/redundantly be specified separately)

    Current state:

    screen shot 2016-12-08 at 08 08 19

    Live version: https://rreusser.github.io/demos/plotly-unsupported/carpet.html

    type: feature status: has TODOs 
    opened by rreusser 59
  • Funnel charts

    Funnel charts

    Funnel charts are kind of interesting because they're kind of like stacked bar charts, with variable width bars, often with sloping sides, which makes for the potential for double-encoding. A standard stacked bar chart has each segment with the same width, and the height of the segment encodes the datum. On the other extreme you can have bars where each are the same height, and the width encodes the datum, like this: https://www.amcharts.com/demos/funnel-chart/

    In both of those cases, the area is proportional to the datum. If you start sloping the sides, then the area no longer matches the datum and it's just the height: https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/funnel/

    So we could maybe add some options to bar to make the version without sloping sides, but it may make more sense to create a new trace type here. We'll want some special legend and color handling, as well as some computations for hovertemplate like 'percentage of total' and 'percentage difference with previous stage' etc.

    type: new trace type 
    opened by nicolaskruchten 57
  • Waterfall charts

    Waterfall charts

    Fixes #3037. A prototype for waterfall new trace type mainly based on bar.

    TODO:

    • [x] add a selection test
    • [x] Why aren't arrayOk offset and width working?
    • [x] add total color container an keep marker similar to bars
    • [x] implement waterfallmode, waterfallgap and waterfallgroupgap
    • [x] fixup cliponaxis:false support
    • [x] fixup lasso/select

    codepen waterfall_profit-loss_2018_positive-negative

    status: reviewable type: new trace type 
    opened by archmoj 50
  • add new promise-based toImage and downloadImage to Plotly

    add new promise-based toImage and downloadImage to Plotly

    ref original pull https://github.com/timelyportfolio/plotly.js/pull/1 for very long discussion and commits


    Addresses

    • https://github.com/plotly/plotly.js/issues/83
    • https://github.com/plotly/plotly.js/issues/89
    • https://github.com/plotly/plotly.js/issues/264
    • https://github.com/plotly/plotly.js/issues/345
    • https://github.com/ropensci/plotly/issues/311

    Summary of Changes

    • [x] attach promise-based toImage directly to Plotly
    • [x] attach promise-based downloadImage directly to Plotly
    • [x] preserve existing unofficial Plotly.Snapshot for backward compatibility with exception of adding promise option in svgToImg

    Example Usage

    Plotly.toImage

    var img = document.createElement('img');
    document.body.appendChild(img);
    
    Plotly.plot()
        .then(Plotly.toImage)
        .then(function(url){
            img.src = url;
        });
    
    // all the options
    Plotly.plot()
        .then(function(gd){
            return Plotly.toImage({
                format: 'png', //also can use 'jpeg', 'webp', 'svg'
                height: 500,
                width: 700
            });
        })
        .then(function(url){
            img.src = url;
        });
    

    Plotly.downloadImage

    Plotly.plot()
        .then(Plotly.downloadImage)
        .then(function(filename){
            console.log(filename);
        });
    
    // all the options
    Plotly.plot()
        .then(function(gd){
            return Plotly.downloadImage({
                filename: 'myspecialplot',
                format: 'png', //also can use 'jpeg', 'webp', 'svg'
                height: 500,
                width: 700
            });
        })
        .then(function(filename){
            console.log(filename);
        });
    
    type: feature status: reviewable 
    opened by timelyportfolio 45
  • Align interactions when plot created inside scaled and/or translated elements using CSS transform

    Align interactions when plot created inside scaled and/or translated elements using CSS transform

    Fixes #888. This is the first commit of a few fixes for interactions with plots that are broken due when css transform scaling is applied. The general aim is to undo the transform matrices applied to these elements for the interactions.

    TODOs:

    • [x] clicking the end of an axis in 2D cartesian to type a new number: the text entry box shows up in the wrong place
    • [x] fixing 2D cartesian pan
    • [x] fixing zoom & pan in ternary & polar
    • [x] fixing scattermapbox hover & select
    • [x] fixing choroplethmapbox hover
    • [x] fixing the position of hover on sankey trace
    • [x] fixing the position of hover on parcats trace
    • [x] adding hover, select and drag-zoom tests for cartesian subplots
    • [x] adding hover, select and drag-zoom tests for polar subplots
    • [x] adding hover, select and drag-zoom tests for mapbox subplots i.e. choroplethmapbox and scattermapbox
    • [x] adding hover, select and drag-zoom tests for geo subplots e.g. choropleth
    • [x] adding hover, select and drag-zoom tests for ternary subplots
    • [x] test using different browsers namely Firefox, Chrome and Safari
    type: bug type: feature type: community status: reviewable 
    opened by alexhartstone 44
  • [WIP] Table view

    [WIP] Table view

    As per discussion at #991

    Most functions, attributes etc. are not working and not final.

    Printing doesn't work as, apparently, nested font specs in an array (dimensions) balk when printing.

    Test cases aren't added to this branch yet.

    Shows a variety of column formats (font options, numeric options) and column rearrangement.

    initial table

    type: feature status: has TODOs 
    opened by monfera 44
  • Make auto-margin step dependent on axis label span

    Make auto-margin step dependent on axis label span

    Hi there, I have some graphs with particularly long labels/axis string values and I'm wondering if there's a way to get them to fit without changing the layout.margin option because I'm using dynamic data.

    Here's CodePen showing a longer label being cut off on both a vertically and horizontally-oriented bar chart - http://codepen.io/mnoble01/pen/zqxZQx.

    type: feature 
    opened by mnoble01 42
  • Native ES6 modules vs. the bundle

    Native ES6 modules vs. the bundle

    When plotly.js is loaded in Chrome by the native ES6 import, the loading crashes with Cannot read property 'document' of undefined at line 18178, i.e. at var d3_document = this.document;

    The problem is that the bundler assumes that when a function is executed without any this, the this will automatically be set to window. This is not the case with ES6 modules, where this will be undefined.

    I fixed it by changing line 27724 from }(); to }.apply(self); but this is just a hack :)

    type: bug 
    opened by oldrich-svec 41
  • Missing ndarray dependencies using plotly.js v2.5.0, npm v6 and react-plotly.js v1

    Missing ndarray dependencies using plotly.js v2.5.0, npm v6 and react-plotly.js v1

    When reviewing our weekly Dependabot updates I came across an issue with our migration from Plotly 2.4.1 to 2.5.0. We now get the error shown below when trying to install dependencies. The issue was shown in our CI pipeline which runs npm ci.

    image

    I've attached our package files from 2.4.1 which work fine and the updated ones from 2.5.0 which break. You can run npm ci with the 2.5.0 files to reproduce.

    error.zip

    opened by dmbarry86 40
  • Vertical or/and horizontal line that is always shown in any hovermode

    Vertical or/and horizontal line that is always shown in any hovermode

    It would be nice to have an option in plotly.js to toggle on a vertical or/and horizontal line across the entire plot area on hover.

    The behavior of the line should be similar to the behavior of the spikes feature, but there are several differences:

    • The line shouldn't depend on hovermode (as spikes do at the moment), moreover it can be used in 'x' or 'y' hovermode to compare data on hover.
    • This line should be always drawn over the nearest x/y point, regardless of whether this point is within the max hover distance or not.

    This feature could be very useful for financial and stock charts

    Related to #2026, #1959

    PR #2150

    type: feature status: discussion needed 
    opened by apalchys 39
  • Xaxis changes when frame changed with sliders

    Xaxis changes when frame changed with sliders

    You can see it by lines. They change their position. (in json axis numbers also changes) 2022-12-28_153734 2022-12-28_153756

    As you can see, lines changed their positions. So, axis changes it according to each frame axis. For example, if there will be frame with 1 marker, this plot will became so small.

    But how can I make stable Plotly, without that movement when I change frames?

    opened by StasSpawn 0
  • Custom HTML Templates for Annotations and Tooltips

    Custom HTML Templates for Annotations and Tooltips

    Hello Everyone,

    I've dug through the issues and can't find what I'm specifically asking for - essentially it would be great to use custom HTML in the tooltips and annotations. I know there is a hover template configurable for Plotly.js, but I'm asking for a bit more in the sense that it would be great to use whatever HTML you'd like besides a set of pre-supported tags (<br>, <b>, etc)

    This seems to be done by other libraries in a number of different ways:

    • Apex Charts Apex charts takes a string from a callback and parses it to HTML.

    • ChartJS ChartJS takes a callback, passes the context, and expects the user to manage the dom element (create and attach one, etc)

    • Codepen to how it's done in FusionCharts (look for the 'plottooltext' attribute in the code) Another example of directly rendering the HTML

    Workaround for now is probably just for me to attach and manage my own dom elements - E.g. off a plotly_hover event I place my element on the mouse position. I haven't figured out how to work around the custom annotations yet.. I'm thinking of injecting my HTML with a tag into the plotly annotations myself after render, but that's pretty dirty and probably won't work well with panning etc.

    Any ideas as to how I can work around this to make plotly work in the meantime are also very welcome 👍

    opened by cd-alexslater 0
  • Pie Chart show wrong with big value

    Pie Chart show wrong with big value

    Hi Team, I have an issue with Pie Chart. When my first value has a very large value compared to the rest, the chart will lose part or all of the image. image

    jsfiddle: https://jsfiddle.net/5u4zyoLd/ Here is my configuration.

    var data =[ { "type": "pie", "values": [ "34000000000.00", "20.4716", "245.50" ], "labels": [ "static 34,000,000,000: 34,000,000,000 ", "Data 1: 20.4716 ", "Data 2: 245.50 " ], "marker": { "colors": [ "#f8fc94", "#769558", "#b0cb34" ] }, "textinfo": "percent", "textfont": { "family": "Noto Sans", "size": 13 }, "text": [ "
    static 34,000,000,000: 34,000,000,000", "2022-12-27 (11:15:00.000)
    Data 1: 20.4716 (t)", "2022-12-27 (11:15:00.000)
    Data 2: 245.50 (°)" ], "hovertemplate": "%{text}
    %{percent:.1%}", "sort": false, "hoverlabel": { "align": "right", "font": { "family": "Noto Sans", "size": 13 } }, "outsidetextfont": { "color": "#d1d9e0" }, "texttemplate": "%{percent:.1%}" } ];

    var layout = { "title": "", "margin": { "t": 0, "b": 20, "l": 40 }, "legend": { "traceorder": "normal", "borderwidth": 0, "font": { "color": "#d1d9e0", "family": "Noto Sans", "size": 13 } }, "showlegend": true, "hovermode": "false", "width": 1000, "height": 400 };

    opened by Duc-Developer 0
  • Scatter plot with date x-axis and dateTime2ms performance

    Scatter plot with date x-axis and dateTime2ms performance

    Hello,

    Thank you for all your efforts in providing such an amazing graphing library.

    We have been using this library in a project which includes a lot of scatter/scattergl plots with realtime data with date axis. The data for plotting comes from 3 - 6 same sensors with a sampling rate of 120 Hz. We update the plot every 100-ms (for real time effect). The x-axis date/time is calculated based on number of samples for each sensor and sampling rate i.e. 120 Hz.

    Recently on doing performance tests (using Chrome Developer tools), we noticed that export.dateTime2ms function is taking too long to execute (as shown in the screenshot as well as the attached profile).

    with_date_time

    As opposed to date axis, if we use the numeric axis, the performance is slightly better:

    without_date_time

    Considering we want to update the graphs every 100 ms and during those 100 ms, we need to read sensors, process data, plot them, save them in files, move x-axis, and a few other task, we want to make sure we are not doing something that takes a lot of time to execute but is not required.

    Hence, my question is really about the dateTime2ms performance? Why is it taking so long to execute? is there a way around it. We can not use numeric axis. Are there any way to improve performance such as not use 'x-axis ticks' etc.

    Thank you

    opened by arsh09 0
  • `alignmentgroup` & `offsetgroup` restyle bug

    `alignmentgroup` & `offsetgroup` restyle bug

        @archmoj this looks great! There's one piece I don't understand: if I load `zz-scatter-grouping-vs-defaults`, then clear all the `alignmentgroup` attrs - `Plotly.restyle(gd,'alignmentgroup',null)` - then the traces in the upper right subplot disappear. They also disappear if I set the `alignmentgroup` for just those two traces to `'bottom'` to match the ones below - `Plotly.restyle(gd,'alignmentgroup','bottom', [3,9])`.
    

    If I also clear offsetgroup they come back, and if I set the offsetgroup for those two to something explicit they get their own group.

    So I guess the odd case is when alignmentgroup is either all null or all the same but one trace, in a different subplot from the others, doesn't have an offsetgroup.

    There's a related case that's clearly broken: in the same mock, if I just clear offsetgroup for the last trace it stays where it was. But if I first give it a new offsetgroup (so it correctly gets new space) and THEN clear it, it gets pushed into the next group!

    Plotly.restyle(gd, 'offsetgroup', null, 11) // clear the group for the last trace, this is OK
    
    Screenshot 2022-12-20 at 19 24 03
    Plotly.restyle(gd, 'offsetgroup', '3', 11) // put it in a new group
    Plotly.restyle(gd, 'offsetgroup', null, 11) // clear its group
    
    Screenshot 2022-12-20 at 19 18 43

    I don't think this is unique to scatter, I can get a similar history-dependent errors from bars from setting / clearing the offsetgroup of the FIRST bar in the bottom right subplot (ie replace the 11 with 4 in those commands). Maybe we just treat null as its own offsetgroup if there are other traces with an offsetgroup on the same axis?

    Originally posted by @alexcjohnson in https://github.com/plotly/plotly.js/issues/6381#issuecomment-1360562317

    type: bug 
    opened by archmoj 0
Releases(v2.17.0)
  • v2.17.0(Dec 23, 2022)

    Added

    • Add shift and autoshift to cartesian y axes to help avoid overlapping of multiple axes [#6334], with thanks to Gamma Technologies for sponsoring the related development!
    • Introduce group attributes for scatter trace i.e. alignmentgroup, offsetgroup, scattermode and scattergap [#6381], this feature was anonymously sponsored: thank you to our sponsor!
    • Add marker.cornerradius attribute to treemap trace [#6351]

    Changed

    • Change bundler from browserify to webpack [#6355]

    Fixed

    • Fix auto backoff when marker symbols and sizes are arrays [#6414]
    • Avoid displaying resize cursor on static sliders [#6397]
    Source code(tar.gz)
    Source code(zip)
  • v2.16.5(Dec 13, 2022)

  • v2.16.4(Dec 7, 2022)

  • v2.16.3(Nov 16, 2022)

  • v2.16.2(Nov 12, 2022)

  • v2.16.1(Oct 21, 2022)

  • v2.16.0(Oct 14, 2022)

  • v2.15.1(Oct 11, 2022)

  • v2.15.0(Oct 7, 2022)

    Added

    • Add angle, angleref and standoff to marker and add backoff to line; also introduce new arrow symbols to facilitate drawing networks [#6297]
    • Add minreducedwidth and minreducedheight to layout for increasing control over automargin [#6307]
    • Add entrywidth and entrywidthmode to legend [#6202, #6324]

    Changed

    • Use valType of angle for rotation in pie [#6304]

    Fixed

    • Fix mapbox touch event after switching back from select mode [#6281], with thanks to @mmtmr for the contribution!
    • Fix automargin to update axis titles in redraws [#6312]
    • Fix exporting patterns with transparent color [#6318]
    • Fix exporting text on empty slices [#6335]
    • Disable interactions for treemap, icicle, sunburst, pie, funnelarea, parcats, parcoords and sankey traces when staticPlot is set to true [#6296]
    Source code(tar.gz)
    Source code(zip)
  • v2.14.0(Aug 10, 2022)

    Added

    • Add support for sankey links with arrows [#6276], with thanks to @Andy2003 for the contribution!
    • Add editSelection option to config [#6285]

    Changed

    • Update dutch translations and fix dateMonth format for nl locale to confirm with expected nl format [#6261], with thanks to @eirvandelden for the contribution!
    Source code(tar.gz)
    Source code(zip)
  • v2.13.3(Jul 25, 2022)

  • v2.13.2(Jul 21, 2022)

    Fixed

    • Fix sankey select error (regression introduced in 2.13.0) [#6265]
    • Handle missing drag layer of invisible sankey traces to fix select error [#6267]
    • Emit selection event in shape drawing dragmodes when an existing selection is modified [#6262]
    Source code(tar.gz)
    Source code(zip)
  • v2.13.1(Jul 14, 2022)

  • v2.13.0(Jul 14, 2022)

    Added

    • Add selections, newselection and activeselection layout attributes to have persistent and editable selections over cartesian subplots [#6243]
    • Add unselected.line.color and unselected.line.opacity options to parcoords trace [#6216, #6236]
    • Add "exclusive" and "inclusive" quartile-computing algorithm to violin trace via quartilemethod attribute [#6187]
    • Add flaglist options including "left", "right", "top", "bottom", "width" and "height" to control the direction of automargin on cartesian axes [#6193]
    • Add delta.prefix and delta.suffix to indicator trace [#6246], with thanks to @paulovieira for the contribution!
    • Add official Chinese (Taiwan) translation (locale zh-tw) [#6247], with thanks to @sec2 for the contribution!
    • Add official Sinhala translation (locale si) [#6238], with thanks to @sujithranga for the contribution!

    Changed

    • Display Plotly's new logo in the modebar [#6232]

    Fixed

    • Fix undesirable missing hover labels of box & violin traces [#6189]
    • Fix xref description of shapes [#6194]
    Source code(tar.gz)
    Source code(zip)
  • v2.12.1(May 9, 2022)

    Fixed

    • Fix for disabling polar rotation when dragmode is set to false [#6147], with thanks to @jonfunkhouser for the contribution!
    • Fix custom modebar buttons mutate the input [#6177]
    • Fix various missing and duplicate spaces in plot schema descriptions [#6183]
    Source code(tar.gz)
    Source code(zip)
  • v2.12.0(May 2, 2022)

    Added

    • Add griddash axis property to cartesian, polar, smith, ternary and geo subplots and add griddash and minorgriddash to carpet trace [6144], with thanks to @njwhite for the contribution!
    • Implement various options to position and style minor ticks and grid lines on cartesian axis types including minor.tickmode, minor.tickvals, minor.tickcolor, minor.ticklen, minor.tickwidth, minor.dtick, minor.tick0, minor.nticks, minor.ticks, minor.showgrid, minor.gridcolor, minor.griddash and minor.gridwidth [6166]

    Changed

    • Use the "willReadFrequently" 2d context creation attribute to optimize readback performance [#6084], with thanks to @junov for the contribution!

    Fixed

    • avoid drawing blank tick labels on cartesian axes [#6163]
    Source code(tar.gz)
    Source code(zip)
  • v2.11.1(Mar 15, 2022)

  • v2.11.0(Mar 12, 2022)

    Added

    • Add a CSP complaint variation of regl-based traces i.e. parcoords, splom, scattergl, scatterpolargl to the "strict" bundle [#6083]
    • Add scattersmith trace to the "strict" bundle [#6135]
    Source code(tar.gz)
    Source code(zip)
  • v2.10.1(Mar 8, 2022)

  • v2.10.0(Mar 5, 2022)

    Added

    • Add support to use version 3 of MathJax and add typesetMath attribute to config [#6073], with thanks to Equinor for sponsoring the related development!
    • Add fillpattern options to scatter trace [#6101], with thanks to @s417-lama for the contribution!
    Source code(tar.gz)
    Source code(zip)
  • v2.9.0(Feb 4, 2022)

  • v2.8.3(Dec 20, 2021)

  • v2.8.2(Dec 20, 2021)

  • v2.8.1(Dec 16, 2021)

  • v2.8.0(Dec 10, 2021)

    Added

    • Introduce horizontal colorbars [#6024]
    • Implement legend.grouptitlefont and hoverlabel.grouptitlefont [#6040]
    • Add texttemplate and textfont to heatmap and histogram2d traces as well as histogram2dcontour and contour traces when coloring is set "heatmap" [#6028]

    Fixed

    • Fix to discard negative values from pie chart post-aggregation instead of during summation [#6051], with thanks to @destiny-wu for the contribution!
    Source code(tar.gz)
    Source code(zip)
  • v2.7.0(Dec 3, 2021)

    Added

    • Add texttemplate, textposition, textfont, textangle, outsidetextfont, insidetextfont, insidetextanchor, constraintext and cliponaxis to histogram trace [#6038]

    Changed

    • Bump probe-image-size module to v7.2.2 [#6036]

    Fixed

    • Fix mapbox derived coordinate for Retina displays [#6039]
    • Fix interaction between uirevision and autorange. Because we push autorange and range back into layout, there can be times it looks like we're applying GUI-driven changes on top of explicit autorange and other times it's an implicit autorange, even though the user's intent was always implicit. This fix treats them as equivalent. [#6046]
    Source code(tar.gz)
    Source code(zip)
  • v2.6.4(Nov 26, 2021)

  • v2.6.3(Nov 12, 2021)

  • v2.6.2(Nov 5, 2021)

  • v2.6.1(Nov 3, 2021)

Ember Charts 3.5 2.3 L2 JavaScript A powerful and easy to use charting library for Ember.js

Ember Charts A charting library built with the Ember.js and d3.js frameworks. It includes time series, bar, pie, and scatter charts which are easy to

Addepar 793 Dec 7, 2022
Simple yet powerful JavaScript Charting library built using d3.js

uvCharts Simple, robust, extensible JavaScript charting library built using d3 designed to help developers embed, build charts in less than couple of

Imaginea 267 May 20, 2021
Apache ECharts is a powerful, interactive charting and data visualization library for browser

Apache ECharts Apache ECharts is a free, powerful charting and visualization library offering an easy way of adding intuitive, interactive, and highly

The Apache Software Foundation 53.8k Jan 9, 2023
:dango: An interactive and responsive charting library

English | 简体中文 G2Plot A charting library based on the Grammar of Graphics. G2Plot is an interactive and responsive charting library. Based on the gram

AntV team 2.3k Dec 30, 2022
📱📈An elegant, interactive and flexible charting library for mobile.

中文 README F2 is born for mobile, developed for developers as well as designers. It is Html5 Canvas-based, and is also compatible with Node.js, Weex an

AntV team 7.8k Dec 31, 2022
Apache ECharts is a powerful, interactive charting and data visualization library for browser

Apache ECharts Apache ECharts is a free, powerful charting and visualization library offering an easy way of adding intuitive, interactive, and highly

The Apache Software Foundation 53.8k Jan 5, 2023
📱📈An elegant, interactive and flexible charting library for mobile.

F2,一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(node, 小程序,weex)。完备的图形语法理论,满足你的各种可视化需求。专业的移动设计指引为你带来最佳的移动端图表体验。英文 README 在此衷心感谢《The Grammar of Graphics》的作者

AntV team 7.8k Dec 27, 2022
A reusable charting library written in d3.js

NVD3 - A reusable D3 charting library Inspired by the work of Mike Bostock's Towards Reusable Charts, and supported by a combined effort of Novus and

Novus 7.2k Jan 3, 2023
Liquify charting library

Liquify Liquify: fast, multi-threaded visualization of stream data with ChartJS & Angular. The aim of Liquify is to provide a fast, customizable and e

null 4 Aug 23, 2022
React components for Chart.js, the most popular charting library

react-chartjs-2 React components for Chart.js, the most popular charting library. Supports Chart.js v3 and v2. Quickstart • Docs • Slack • Stack Overf

null 5.6k Jan 4, 2023
An easy-to-use cross-framework JS charting library

Compact Chart Visualize your data under a minute, in any Javascript framework Table of Contents About How to use it Examples Demo Plain HTML Example w

Mireo 1 Jul 28, 2021
A server-side-rendered charting library for Fresh

fresh_charts A server side rendered charting library for Fresh based on Chart.js. Usage There are two main ways to render a chart. There is the JSX/TS

Deno 57 Jan 2, 2023
A damn-sexy, open source real-time dashboard builder for IOT and other web mashups. A free open-source alternative to Geckoboard.

freeboard free·board (noun) *\ˈfrē-ˌbȯrd* the distance between the waterline and the main deck or weather deck of a ship or between the level of the w

freeboard 6.3k Dec 28, 2022
Highcharts JS, the JavaScript charting framework

Highcharts JS is a JavaScript charting library based on SVG, with fallbacks to VML and canvas for old browsers. Official website: www.highcharts.com D

Highsoft 10.9k Jan 9, 2023
Simple yet flexible JavaScript charting for designers & developers

Simple yet flexible JavaScript charting for designers & developers Documentation All the links point to the new version 3 of the lib. Introduction Get

Chart.js 59.4k Jan 10, 2023
Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js

dc.js Dimensional charting built to work natively with crossfilter rendered using d3.js. In dc.js, each chart displays an aggregation of some attribut

null 7.4k Jan 4, 2023
:bar_chart: Declarative Charting Framework for Angular

ngx-charts Declarative Charting Framework for Angular! ngx-charts is unique because we don't merely wrap d3, nor any other chart engine for that matte

Swimlane 4.2k Dec 27, 2022
Chart.js module for charting financial securities

Chart.js Financial Charting Chart.js module for Candlestick and OHLC charts Roadmap Chart.js 2.7.0 added our timeseries scale as new option called dis

Chart.js 630 Dec 29, 2022