All Versions
Latest Version
Avg Release Cycle
72 days
Latest Release
1563 days ago

Changelog History
Page 1

  • v4.1.0 Changes

    April 01, 2020
    • Minimum Python version is now 3.6
    • ๐Ÿš€ Update Vega-Lite to version 4.8.1; many new features and bug fixes from Vega-Lite versions 4.1 through 4.8; see Vega-Lite Release Notes.

    โœจ Enhancements

    • strokeDash encoding can now be used to control line styles (Example: Multi Series Line Chart
    • ๐Ÿ’พ now relies on altair_saver for more flexibility (#1943).
    • New method replaces chart.serve(), and relies on altair_viewer to allow offline viewing of charts (#1988).

    ๐Ÿ› Bug Fixes

    • ๐Ÿ‘Œ Support Python 3.8 (#1958)
    • ๐Ÿ‘Œ Support multiple views in JupyterLab (#1986)
    • ๐Ÿ‘Œ Support numpy types within specifications (#1914)
    • ๐Ÿ‘Œ Support pandas nullable ints and string types (#1924)

    ๐Ÿšง ##Maintenance

    • Altair now uses black and flake8 for maintaining code quality & consistency.
  • v4.0.1

    January 14, 2020
  • v4.0.0 Changes

    December 11, 2019

    ๐Ÿš€ Altair Version 4.0.0 release

    ๐Ÿ”– Version 4.0.0 is based on Vega-Lite version 4.0, which you can read about at

    โœ… It is the first version of Altair to drop Python 2 compatibility, and is tested
    on Python 3.5 and newer.

    โœจ Enhancements

    ๐Ÿ‘Œ Support for interactive legends: (Example)
    interactive legend

    ๐Ÿ“ฑ Responsive chart width and height: (Example)
    dynamic width

    ๐Ÿ“ฑ Bins responsive to selections: (Example)
    ๐Ÿ“ฑ responsive bin

    ๐Ÿ†• New pivot transform: (Example)

    ๐Ÿ†• New Regression transform: (Example)

    ๐Ÿ†• New LOESS transform: (Example)

    ๐Ÿ†• New density transform: (Example)

    Image mark (Example)

    ๐Ÿ†• New default html renderer, directly compatible with Jupyter Notebook and
    JupyterLab without the need for frontend extensions, as well as tools like
    nbviewer and nbconvert, and related notebook environments such as Zeppelin,
    0๏ธโƒฃ Colab, Kaggle Kernels, and DataBricks. To enable the old default renderer, use:


    ๐Ÿ‘Œ Support per-corner radius for bar marks: (Example)

    Grammar Changes

    Sort-by-field can now use the encoding name directly. So instead of

    alt.Y('y:Q', sort=alt.EncodingSortField('x_field', order='descending'))

    you can now use::

    alt.Y('y:Q', sort="-x")

    ๐Ÿ”ง The rangeStep argument to :class:Scale and :meth:Chart.configure_scale is deprecated.
    instead, use{"step": rangeStep}) or
    ๐Ÿ”ง chart.configure_view(step=rangeStep).

    align, center, spacing, and columns are no longer valid chart properties, but
    ๐Ÿšš are moved to the encoding classes to which they refer.

  • v3.3.0 Changes

    November 27, 2019

    ๐Ÿ”– Version 3.3.0

    ๐Ÿš€ released Nov 27, 2019

    ๐Ÿš€ Last release to support Python 2

    โœจ Enhancements

    • โž• Add inheritance structure to low-level schema classes (#1803)
    • โž• Add html renderer which works across frontends (#1793)
    • ๐Ÿ‘Œ Support Python 3.8 (#1740, #1781)
    • โž• Add :G shorthand for geojson type (#1714)
    • โž• Add data generator interface: alt.sequence, alt.graticule,
      alt.sphere() (#1667, #1687)
    • Support geographic data sources via __geo_interface__ (#1664)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ‘Œ Support pickle and copy.deepcopy for chart objects (#1805)
    • ๐Ÿ›  Fix bug when specifying count() within transform_joinaggregate() (#1751)
    • ๐Ÿ›  Fix LayerChart.add_selection (#1794)
    • ๐Ÿ›  Fix arguments to project() method (#1717)
    • ๐Ÿ›  Fix composition of multiple selections (#1707)
  • v3.2.0 Changes

    August 05, 2019

    ๐Ÿ”– Version 3.2.0 (released August 5, 2019)

    ๐Ÿš€ Upgraded to Vega-Lite version 3.4 (See Vega-Lite 3.4 Release Notes).

    Following are changes to Altair in addition to those that came with VL 3.4:

    โœจ Enhancements

    • Selector values can be used directly in expressions (#1599)
    • Top-level chart repr is now truncated to improve readability of error
      messages (#1572)

    ๐Ÿ› Bug Fixes

    • top-level add_selection methods now delegate to sub-charts. Previously
      they produced invalid charts (#1607)
    • ๐Ÿšš Unsupported mark_*() methods removed from LayerChart (#1607)
    • ๐Ÿ†• New encoding channels are properly parsed (#1597)
    • Data context is propagated when encodings are specified as lists (#1587)

    Backward-Incompatible Changes

    • alt.LayerChart no longer has mark_*() methods, because they never
      produced valid chart specifications) (#1607)
  • v3.1.0 Changes

    June 06, 2019

    โšก๏ธ Update includes full compatibility with version 3.3 of Vega-Lite.

    โœจ Enhancements

    • โž• Added support for vega themes via alt.themes.enable(theme_name) (#1539)

    • Added an alt.renderers.disable_max_rows() method for disabling the maximum rows check (#1538)

    • ๐Ÿ‘Œ Improved user-facing warnings/errors around layering and faceting (#1535).

    • data argument is now properly handled by (#1525)

    • ๐Ÿšš Compound charts (layer, concat, hconcat, vconcat) now move data to the top level by default. In particular, this means that the facet() method can now be called directly on a layered chart without having to change how data is specified. (#1521)

    • ๐Ÿ‘ alt.LayerChart now supports mark_*() methods. If a layer specifies a mark at the top level, all child charts will inherit it (unless they override it explicitly).

    • alt.Chart.facet() now handles wrapped facets; for example:

      chart.facet('column_name', columns=5)

      See altair/examples/ for a more complete example.

    ๐Ÿ› Bug fixes

    • ๐Ÿ‘‰ Make chart.serve() and respect the data transformer setting (#1538)

    • ๐Ÿ›  Fixed a deserialization bug for certain chart specs in schemapi (#1543)

    Backward-Incompatible Changes

    • alt.Chart.facet() now accepts a wrapped facet encoding as a first positional argument, rather than a row encoding. The following are examples of old invocations, and the equivalent new invocations:

      • chart.facet(row='col1', column='col2'): unchanged
      • chart.facet('col1', 'col2'): change to chart.facet(row='col1', column='col2')
      • chart.facet('col1'): change to chart.facet(row='col1')

    In each case, the new invocations are compatible back to Altair 2.X.

    • Several of the encoding channels added in 3.0 have had their capitalization corrected to better match the names used in the schema:

      • alt.Fillopacity -> alt.FillOpacity
      • alt.Strokeopacity -> alt.StrokeOpacity
      • alt.Strokewidth -> alt.StrokeWidth
      • alt.Xerror -> alt.XError
      • alt.Xerror2 -> alt.XError2
      • alt.Yerror -> alt.YError
      • alt.Yerror2 -> alt.YError2
  • v3.0.1 Changes

    May 01, 2019

    ๐Ÿ›  Fix version info bug for HTML output and Colab & Kaggle renderers.

  • v3.0.0 Changes

    April 26, 2019

    โšก๏ธ Update to Vega-Lite 3.2 and Vega 5.3 & support all new features. See ๐Ÿš€ for Vega-Lite ๐Ÿ”‹ feature lists.


    • new compound marks: mark_boxplot(), mark_errorband(), mark_errorbar()
    • new transforms: transform_impute(), transform_joinaggregate(), transform_flatten() transform_fold(), transform_sample(), transform_stack()
    • ๐Ÿ†• new facet encoding that is similar to the row and column encoding, but allows for wrapped facets
    • ๐Ÿ†• new alt.concat() function that is similar to alt.hconcat and alt.vconcat, but allows for more general wrapped concatenation
    • ๐Ÿ†• new columns keyword that allows wrapped faceting, repeating, and concatenation.
    • ๐Ÿ›  many, many bug fixes
    • ๐Ÿ”ง tooltips can now be automatically populated using the tooltip mark configuration.
    • ability to specify initial condisions for selections
  • v3.0.0.rc1

    March 27, 2019
  • v2.4.1 Changes

    February 21, 2019

    โœจ Enhancements

    • ๐Ÿ“š Several documentation cleanups & new examples

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fix incompatibility with pandas version 0.24 (#1315)