Releases: vega/altair
Weekly Build 6.1.0.dev20260309
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260309
Tag: weekly-20260309-356c78bb
Previous Weekly Tag: weekly-20260223-903e68e1
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260309
# or
uv pip install altair==6.1.0.dev20260309Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260309) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260309-356c78bb
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260309-356c78bbNote: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260309-356c78bb",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260309-356c78bb" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260309-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20260223
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260223
Tag: weekly-20260223-903e68e1
Previous Weekly Tag: weekly-20260216-e85e1e3b
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260223
# or
uv pip install altair==6.1.0.dev20260223Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260223) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260223-903e68e1
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260223-903e68e1Note: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260223-903e68e1",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260223-903e68e1" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260223-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20260216
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260216
Tag: weekly-20260216-e85e1e3b
Previous Weekly Tag: weekly-20260126-64e0d685
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260216
# or
uv pip install altair==6.1.0.dev20260216Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260216) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260216-e85e1e3b
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260216-e85e1e3bNote: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260216-e85e1e3b",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260216-e85e1e3b" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260216-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20260126
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260126
Tag: weekly-20260126-64e0d685
Previous Weekly Tag: weekly-20260119-a2afad36
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260126
# or
uv pip install altair==6.1.0.dev20260126Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260126) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260126-64e0d685
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260126-64e0d685Note: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260126-64e0d685",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260126-64e0d685" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260126-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20260119
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260119
Tag: weekly-20260119-a2afad36
Previous Weekly Tag: weekly-20260112-846f091b
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260119
# or
uv pip install altair==6.1.0.dev20260119Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260119) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260119-a2afad36
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260119-a2afad36Note: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260119-a2afad36",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260119-a2afad36" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260119-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20260112
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20260112
Tag: weekly-20260112-846f091b
Previous Weekly Tag: weekly-20251229-49523dc7
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20260112
# or
uv pip install altair==6.1.0.dev20260112Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20260112) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20260112-846f091b
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20260112-846f091bNote: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20260112-846f091b",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20260112-846f091b" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20260112-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
Weekly Build 6.1.0.dev20251229
Weekly Pre-Release Build of Altair
This is a pre-release version for testing purposes.
Build Information
Version: 6.1.0.dev20251229
Tag: weekly-20251229-49523dc7
Previous Weekly Tag: weekly-20251222-6c0bf289
Installation
From PyPI (recommended)
Install the latest weekly build directly from PyPI:
pip install altair==6.1.0.dev20251229
# or
uv pip install altair==6.1.0.dev20251229Note: Weekly builds publish timestamped development versions (for example 6.1.0.dev20251229) to PyPI. When you pin that exact version, pip installs the dev build automatically, without the need for a --pre flag.
From GitHub Repository (direct install)
Install directly from the tagged commit without downloading the wheel:
Command line (pip or uv):
pip install git+https://github.com/vega/altair.git@weekly-20251229-49523dc7
# or
uv pip install git+https://github.com/vega/altair.git@weekly-20251229-49523dc7Note: Installing directly from the weekly-... tag will surface the base development version (without the timestamp suffix) because the version file edits are not committed.
Add to pyproject.toml (pip/uv):
[project]
dependencies = [
"altair @ git+https://github.com/vega/altair.git@weekly-20251229-49523dc7",
]Add to pixi.toml (pixi):
[pypi-dependencies]
altair = { git = "https://github.com/vega/altair.git", rev = "weekly-20251229-49523dc7" }From GitHub Release (manual download)
Download the wheel file from the assets below and install:
pip install altair-6.1.0.dev20251229-py3-none-any.whlTesting & Feedback
Please note: This is a testing version. If you encounter any issues or unexpected behavior, we would greatly appreciate if you open an issue to report it. Your feedback helps improve Altair!
v6.0.0
Release v6.0.0
The Vega-Altair team is pleased to announce the release of version 6.0.0. Firstly, we are grateful for the many returning contributors (@franzhaas, @dangotbanned, @dsmedia, @joelostblom, @tempdata73, @mattijn, @jonmmease, @eitanlees, @kurtmckee, @MarcoGorelli), and a special shoutout to all the new contributors (@JasonnnW3000, @edmundmiller, @jannisko, @stanmart, @star1327p, @baldwint, @daizutabi, @azjps, @joaopalmeiro, @bobot). You are all awesome!
In short what is included with the version 6 release of Altair.
- we now compile against Vega-Lite version 6 (to be specific, version 6.1.0) and provide support for Python 3.14.
- we have a new datasets module,
altair.datasets, lazily access to datasets from https://github.com/vega/vega-datasets. - we are now thread-safe, altair specifications should be stable after re-running.
- we improved docs and included new examples, eg. this faceted choropleth of habitat species across geographical counties https://altair-viz.github.io/gallery/maps_faceted_species.html.
- we improved the typing experiences.
- we migrated to
uvas part of the infrastructure modernization and now have automated weekly builds.
We test all changes thoroughly, but nevertheless, if you encounter any issue or like to start a discussion. Please feel free!
Full details are available in the complete changelog below.
Breaking
- feat: Bump
vega-lite>=6by @franzhaas in #3831
Enhancements
- feat: Show python types in
ValidationErrormessages by @dangotbanned in #3735 - feat: Update
vega-liteto5.21.0by @dangotbanned in #3761 - feat: Show
user_rowsinMaxRowsErrormessage by @dangotbanned in #3768 - feat: Allow numpy scalars in altair expressions by @stanmart in #3827
- feat: adds altair.datasets by @mattijn in #3848
- feat: preserve the empty property for the three operators (&, |, ~) by @mattijn in #3853
- feat: hashing of parameter and view names by @mattijn in #3851
- feat: Allow opening the editor without validating the spec by @joelostblom in #3869
- feat: require minimal vegafusion 2 and revert #3857 by @mattijn in #3885
- feat: add warning for deduplications by @mattijn in #3902
Bug Fixes
- fix(typing): Resolve LSP violation for
ChartType.databy @dangotbanned in #3740 - fix: Replace circular import in
schemapi.pyby @dangotbanned in #3751 - fix: Include
*(Datum|Value)inSchemaValidationErrorby @dangotbanned in #3750 - fix: Resolve multiple
sphinxwarnings by @dangotbanned in #3787 - fix(typing): overload in
eval_blockincorrectly showedTrueas the default forstrictby @MarcoGorelli in #3855 - fix: import TypedDict from typing from python 3.15 by @mattijn in #3877
- fix: update typing_extensions dependency for Python < 3.15 by @daizutabi in #3881
- fix: Make
.changedproperty optional inJupyterChart#3868 by @azjps in #3871 - fix(types): Change the height and width types of
alt.Chart()frominttofloatby @joaopalmeiro in #3888 - fix: Repair vega export by @bobot in #3889
Documentation
- docs: Update LICENSE, fix copyright license year by @JasonnnW3000 in #3726
- docs: Add altair-upset link by @edmundmiller in #3786
- docs(example): Adds Confidence Interval Ellipses by @dangotbanned in #3747
- docs: Resolve
geopandas.read_file(...)warnings by @dangotbanned in #3795 - docs: bump
pyscript==2025.2.2by @dangotbanned in #3797 - docs: fix broken links by @jannisko in #3802
- docs(example): Add Faceted map using Species Habitat dataset by @dsmedia in #3809
- docs: Add documentation for initial interval selection date ranges by @dsmedia in #3815
- docs: Update the waterfall_chart.py colors by @eitanlees in #3830
- docs: Clarify how
orderandonin the param section by @joelostblom in #3629 - docs: Improved docs on Transforms by @tempdata73 in #2655
- docs: More clearly illustrate parameter compositions by @joelostblom in #3628
- docs: new dataset source, from vega_dataset to altair.dataset by @mattijn in #3859
- docs: Correct some typos by @star1327p in #3904
- docs: improve docs how to return chart as html by @mattijn in #3849
- docs: Update the Lightning Viz link by @star1327p in #3839
- docs: Iris to penguins by @baldwint in #2231
- docs: docbuild warnings by @mattijn in #3850
- docs: Make the Code of Conduct link clickable by @star1327p in #3852
- docs: note within geoshape mark page to spatial data section by @mattijn in #3892
- docs: Remove whitespace after '*' so that text is rendered italic. by @thomascamminady in #3882
- docs: fix broken external reference URLs in examples by @dsmedia in #3898
Other Changes
- chore: Bump version to 5.6.0dev by @jonmmease in #3700
- ci: Temporal examples in
vegafusionby @dangotbanned in #3702 - refactor(ruff): Apply
TC006fixes by @dangotbanned in #3706 - chore: fix
ruff,mypywarnings by @dangotbanned in #3717 - ci: Switch from
hatch,piptouvin GitHub Actions by @dangotbanned in #3719 - ci(typing): Add bundled stubs to
pyright.ignoreby @dangotbanned in #3724 - ci: bump astral-sh/setup-uv from 4 to 5 in the github-actions group by @dependabot[bot] in #3727
- chore(ruff): Fix ruff warnings by @dangotbanned in #3736
- chore(typing): fix
mypy>=1.14.0warnings by @dangotbanned in #3739 - chore(ruff): Fix
UP006warnings during codegen by @dangotbanned in #3746 - refactor: Centralize
Vegaproject versioning by @dangotbanned in #3720 - ci: Unpin
pillow, allow>=10.0.0by @dangotbanned in #3764 - chore(ruff): Update to
0.9.0by @dangotbanned in #3766 - chore(ruff): Fix
0.9.2lints by @dangotbanned in #3771 - chore: Add
needs-triageto new bug reports by @dangotbanned in #3769 - test: Make
skip_requires_pyarrowcompatible w/pytest.paramby @dangotbanned in #3772 - build: Migrate from
hatchtouvby @dangotbanned in #3723 - ci(typing): Disable
mypy[annotation-unchecked]on examples by @dangotbanned in #3775 - ci(uv): Remove dynamic version from
uv.lockby @dangotbanned in #3776 - ci(uv): bump
mypy==1.15.0by @dangotbanned in #3790 - ci: bump
narwhals>=1.25.1by @dangotbanned in #3792 - ci(uv): bump
ruff==0.9.5by @dangotbanned in #3799 - ci: bump
narwhals>=1.26.0by @dangotbanned in #3800 - ci: bump
narwhals>=1.27.1by @dangotbanned in #3807 - chore: Remove deprecated
nw.from_native(..., strict=True)by @dangotbanned in #3811 - chore(typing): Follow-up fix
_from_array_likeby @dangotbanned in #3812 - ci(ruff): move
excludetoextend-excludeby @dangotbanned in #3813 - chore: Add numfocus sponsor link by @joelostblom in #3814
- chore: Use organization-wide FUNDING.yml by @joelostblom in #3816
- chore: Bump
vega-embed==7by @franzhaas in #3829 - chore: Run
typosandcodespellagainst the codebase by @kurtmckee in #3840 - ci: bump astral-sh/setup-uv from 5 to 6 in the github-actions group by @dependabot[bot] in #3834
- ci: fix outdated
ipython[kernel]dependency by @dangotbanned in #3861 - test: update test_datasets.py by @mattijn in #3857
- ci: add nightly builds system by @mattijn in #3858
- ci: fix mypy unused-ignore in tests by @m...
Version 5.5.0
Release 5.5.0
The Vega-Altair team is pleased to announce the release of version 5.5.0. This version introduces several exciting new features and enhancements including a revamped theme system, a new renderer optimized for screen readers, and numerous type system updates that improve auto-completion and make it easier to integrate Altair into larger typed programs.
This release adds Python 3.13 and removes Python 3.8 support. It also includes a variety of documentation improvements and a range of important bug fixes.
Thanks to our maintainers (@binste, @dangotbanned, @joelostblom, @mattijn, and @jonmmease), returning contributors (@MarcoGorelli, @daylinmorgan, and @dsmedia), and first time contributors (@jpn--, @davidgroves, and @apoorvkh) for these improvements.
What's Changed
Deprecation
alt.themes
This release deprecates the alt.themes ThemeRegistry object and replaces it with an improved theme API in the new alt.theme module.
See the updated Chart Themes documentation for more information.
Note
Usage of the legacy alt.themes registry will be supported until version 6, but will now display a warning on first use.
- Refactor
alt.themes->alt.themeby @dangotbanned in #3618 - Adds
@alt.theme.registerdecorator by @dangotbanned in #3526 - Adds
ThemeConfig(TypedDict) by @dangotbanned in #3536
Example of registering a custom theme
import altair as alt
import pandas as pd
data = pd.DataFrame({'x': [5, 3, 6, 7, 2],
'y': ['A', 'B', 'C', 'D', 'E']})
@alt.theme.register("my_little_theme", enable=True)
def custom_theme():
return alt.theme.ThemeConfig(
config={
"bar":{"color":"black"}
}
)
chart = alt.Chart(data).mark_bar().encode(
x='x',
y='y',
)
chart # enable default using `alt.theme.enable("default")`
Example of instant feedback while you define a theme config through Pylance in VSCode
Enhancements
Olli Renderer
This release integrates the Olli project to provide a chart renderer that augments chart visualizations with a keyboard-navigable structure accessible to screen readers.
- Add 'olli' renderer to generate accessible text structures for screen reader users by @binste in #3580
Example of olli renderer:
import altair as alt
from vega_datasets import data
alt.renderers.enable("olli")
cars = data.cars.url
chart = alt.Chart(cars).mark_bar().encode(
y='Cylinders:O',
x='mean_acc:Q'
).transform_aggregate(
mean_acc='mean(Acceleration)',
groupby=["Cylinders"]
)
chart
Expressions and Selections
Several improvements were made to Altair's expression and selection APIs:
- Generate
exprmethod signatures, docs by @dangotbanned in #3600 - Support
&,|,~on all...Predicateclasses by @dangotbanned in #3668 - Support
datetime.(date|datetime)inExpression(s) by @dangotbanned in #3654 - Support
datetime.(date|datetime)as aSchemaBaseparameter by @dangotbanned in #3653 - Add missing
floattoIntoExpressionalias by @dangotbanned in #3611
Example of combining predicates within .transform_filter
import altair as alt
from vega_datasets import data
source = data.population.url
chart = alt.Chart(source).mark_line().encode(
x="age:O",
y="sum(people):Q",
color="year:O"
).transform_filter(
~alt.FieldRangePredicate(field='year', range=[1900, 1960])
& (alt.datum.age <= 70)
)
chartExample of using Python datetime.date for value in alt.selection_interval()
import datetime
import altair as alt
from vega_datasets import data
source = data.unemployment_across_industries.url
dt_values = [datetime.date(2005, 1, 1), datetime.date(2009, 1, 1)]
brush = alt.selection_interval(
encodings=['x'],
value={"x": dt_values}
)
base = alt.Chart(source).mark_area(
color='goldenrod',
opacity=0.3
).encode(
x='yearmonth(date):T',
y='sum(count):Q',
)
background = base.add_params(brush)
selected = base.transform_filter(brush).mark_area(color='goldenrod')
background + selected
Multiple predicates and constraints in Chart.transform_filter
- Support
Chart.transform_filter(*predicates, **constraints)by @dangotbanned in #3664
Example of using keyword-argument constraints to simplify filter compositions:
import altair as alt
from vega_datasets import data
source = data.population.url
chart = alt.Chart(source).mark_area().encode(
x="age:O",
y="sum(people):Q",
color="year:O"
).transform_filter(year=2000, sex=1)
chart
Bug Fixes
- Resolve multiple
@utils.use_signatureissues by @dangotbanned in #3565 - Relax
dictannotations inchannels.pyby @dangotbanned in #3573 - Set charset=UTF-8 in HTML templates. by @davidgroves in #3604
- Replace unsafe
locals()manipulation inChart.encodeby @dangotbanned in #3637 - Revise generated annotation order by @dangotbanned in #3655
- Resolve
alt.bindingsignature/docstring issues by @dangotbanned in #3671 - Add missing
@skip_requires_pyarrow(requires_tzdata=True)by @dangotbanned in #3674 - Don't materialise Ibis table to PyArrow if using vegafusion data transformer by @MarcoGorelli in #3566
mypy1.12.0 errors by @dangotbanned in #3632- Resolve warnings in
test_api.pyby @dangotbanned in #3592
Documentation
Several new examples were added to the documentation
Example of using alt.when().then().otherwise()
import altair as alt
from vega_datasets import data
source = data.cars()
brush = alt.selection_interval()
chart = alt.Chart(source).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color=alt.when(brush).then("Origin").otherwise(alt.value("lightgray"))
).add_params(
brush
)
chart
Example of using luminance in an expression to dynamically colorize text
import altair as alt
from vega_datasets import data
source = data.barley()
base = alt.Chart(source).encode(
x=alt.X('sum(yield):Q').stack('zero'),
y=alt.Y('site:O').sort('-x'),
text=alt.Text('sum(yield):Q', format='.0f')
)
bars = base.mark_bar(
tooltip=alt.expr("luminance(scale('color', datum.sum_yield))")
).encode(
color='sum(yield):Q'
)
text = base.mark_text(
align='right',
dx=-3,
color=alt.expr("luminance(scale('color', datum.sum_yield)) > 0.5 ? 'black' : 'white'")
)
bars + text
- Unstack area to render cumulative chart correctly by @joelostblom in #3558
- Change remote nick to
originand capitalize version commit by @joelostblom in #3559 - Update releasing notes to reflect that main branch is now protected by @binste in #3562
- Split interactive docs section into subpages by @joelostblom in #3561
- Update docs to use correct init value for
selection_pointby @jpn-- in #3584 - Add example with overlapping bars in a grouped bar chart by @mattijn in #3612
- Bar chart with labels coloured by measured luminance by @mattijn in #3614
- Adds example Calculate Residuals by @dangotbanned in #3625
- Adds Vega-Altair Theme Test by @dangotbanned in #3630
- adds info with step size/independent scale by @daylinmorgan in #3644
- Fix "Layered chart with Dual-Axis" (Method syntax) by @dangotbanned in #3660
- Fix inaccurate
selection_intervalsignatur...
Version 5.4.1
What's Changed
Enhancements
- feat(typing): Generate
Literalaliases inchannelsoverload(s) by @dangotbanned in #3535 - feat(typing): Generate
Literal(s) using"const"by @dangotbanned in #3538
Bug Fixes
- fix: Raise informative error message if a non-existent column name is passed by @MarcoGorelli in #3533
- revert: Remove
sphinxversion constraint by @dangotbanned in #3541 - fix: Pass native dataframe to data transformers by @MarcoGorelli in #3550
- fix: Resolve
ThencopyTypeErrorby @dangotbanned in #3553
Documentation
Other Changes
- ci: bump
ruff>=0.6.0by @dangotbanned in #3539 - ci: Remove
m2rfrommypy.overridesby @dangotbanned in #3540 - refactor: Simplify
SchemaBase.copyby @dangotbanned in #3543 - fix(typing): Resolve misc type ignores in
schemapi.pyby @dangotbanned in #3545 - test: Rename test to more specific
chart_error_example__four_errors_hide_fourthby @dangotbanned in #3546 - test: Shorten
test_chart_validation_errorstest ids by @dangotbanned in #3551 - refactor: Replace an indirect
SchemaBaseimport by @dangotbanned in #3556 - test: Fix deprecation warning from
ipywidgetsby @dangotbanned in #3557
Full Changelog: v5.4.0...v5.4.1
